mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2025-01-15 12:01:51 +01:00
[BLIND] Add blocks for MC 1.8.
This commit is contained in:
parent
f965ea0610
commit
43dea0830a
@ -12,87 +12,96 @@ import fr.neatmonster.nocheatplus.utilities.BlockProperties;
|
|||||||
*/
|
*/
|
||||||
public class BlockInit {
|
public class BlockInit {
|
||||||
|
|
||||||
// TODO: Change to assert names only?, would be better with being able to feed MC names or map them as well, though.
|
// TODO: Change to assert names only?, would be better with being able to feed MC names or map them as well, though.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for Material existence, throw RuntimeException if not.
|
* Check for Material existence, throw RuntimeException if not.
|
||||||
* @param id
|
* @param id
|
||||||
*/
|
*/
|
||||||
public static void assertMaterialExists(int id) {
|
public static void assertMaterialExists(int id) {
|
||||||
if (BlockProperties.getMaterial(id) == null) {
|
if (BlockProperties.getMaterial(id) == null) {
|
||||||
throw new RuntimeException("Material " + id + " does not exist.");
|
throw new RuntimeException("Material " + id + " does not exist.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for material existence and naming (exact match).
|
* Check for material existence and naming (exact match).
|
||||||
* @param id
|
* @param id
|
||||||
* @param name
|
* @param name
|
||||||
*/
|
*/
|
||||||
public static void assertMaterialName(int id, String name) {
|
public static void assertMaterialName(int id, String name) {
|
||||||
Material mat = BlockProperties.getMaterial(id);
|
Material mat = BlockProperties.getMaterial(id);
|
||||||
if ( mat == null) {
|
if ( mat == null) {
|
||||||
throw new RuntimeException("Material " + id + " does not exist.");
|
throw new RuntimeException("Material " + id + " does not exist.");
|
||||||
}
|
}
|
||||||
if (mat.name().equals(name)) {
|
if (mat.name().equals(name)) {
|
||||||
throw new RuntimeException("Name for Material " + id + " ('" + mat.name() + "') does not match '" + name + "'.");
|
throw new RuntimeException("Name for Material " + id + " ('" + mat.name() + "') does not match '" + name + "'.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for material existence and naming (parts must all be contained with ignored case).
|
* Check for material existence and naming (parts must all be contained with ignored case).
|
||||||
* @param id
|
* @param id
|
||||||
* @param parts
|
* @param parts
|
||||||
*/
|
*/
|
||||||
public static void assertMaterialNameMatch(int id, String... parts) {
|
public static void assertMaterialNameMatch(int id, String... parts) {
|
||||||
Material mat = BlockProperties.getMaterial(id);
|
Material mat = BlockProperties.getMaterial(id);
|
||||||
if ( mat == null) {
|
if ( mat == null) {
|
||||||
throw new RuntimeException("Material " + id + " does not exist.");
|
throw new RuntimeException("Material " + id + " does not exist.");
|
||||||
}
|
}
|
||||||
String name = mat.name().toLowerCase();
|
String name = mat.name().toLowerCase();
|
||||||
for (String part : parts) {
|
for (String part : parts) {
|
||||||
if (name.indexOf(part.toLowerCase()) < 0) {
|
if (name.indexOf(part.toLowerCase()) < 0) {
|
||||||
throw new RuntimeException("Name for Material " + id + " ('" + mat.name() + "') should contain '" + part + "'.");
|
throw new RuntimeException("Name for Material " + id + " ('" + mat.name() + "') should contain '" + part + "'.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set block breaking properties same as the block of the given material.
|
* Set block breaking properties same as the block of the given material.
|
||||||
* @param newId
|
* @param newId
|
||||||
* @param mat
|
* @param mat
|
||||||
*/
|
*/
|
||||||
public static void setPropsAs(int newId, Material mat) {
|
public static void setPropsAs(int newId, Material mat) {
|
||||||
BlockProperties.setBlockProps(newId, BlockProperties.getBlockProps(mat));
|
BlockProperties.setBlockProps(newId, BlockProperties.getBlockProps(mat));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set block breaking properties same as the block of the given id.
|
* Set block breaking properties same as the block of the given id.
|
||||||
* @param newId
|
* @param newId
|
||||||
* @param mat
|
* @param mat
|
||||||
*/
|
*/
|
||||||
public static void setPropsAs(int newId, int otherId) {
|
public static void setPropsAs(int newId, int otherId) {
|
||||||
BlockProperties.setBlockProps(newId, BlockProperties.getBlockProps(otherId));
|
BlockProperties.setBlockProps(newId, BlockProperties.getBlockProps(otherId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set block breaking and shape properties same as the block of the given material.
|
* Set block breaking and shape properties same as the block of the given material.
|
||||||
* @param newId
|
* @param newId
|
||||||
* @param mat
|
* @param mat
|
||||||
*/
|
*/
|
||||||
public static void setAs(int newId, Material mat) {
|
public static void setAs(int newId, Material mat) {
|
||||||
BlockFlags.setFlagsAs(newId, mat);
|
BlockFlags.setFlagsAs(newId, mat);
|
||||||
setPropsAs(newId, mat);
|
setPropsAs(newId, mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set block breaking and shape properties same as the block of the given id.
|
* Set block breaking and shape properties same as the block of the given id.
|
||||||
* @param newId
|
* @param newId
|
||||||
* @param mat
|
* @param mat
|
||||||
*/
|
*/
|
||||||
public static void setAs(int newId, int otherId) {
|
public static void setAs(int newId, int otherId) {
|
||||||
BlockFlags.setFlagsAs(newId, otherId);
|
BlockFlags.setFlagsAs(newId, otherId);
|
||||||
setPropsAs(newId, otherId);
|
setPropsAs(newId, otherId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set like air, plus instantly breakable.
|
||||||
|
* @param newId
|
||||||
|
*/
|
||||||
|
public static void setInstantAir(int newId) {
|
||||||
|
BlockFlags.setFlagsAs(newId, Material.AIR);
|
||||||
|
BlockProperties.setBlockProps(newId, BlockProperties.instantType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,108 @@
|
|||||||
|
package fr.neatmonster.nocheatplus.compat.blocks.init.vanilla;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import fr.neatmonster.nocheatplus.compat.blocks.BlockPropertiesSetup;
|
||||||
|
import fr.neatmonster.nocheatplus.compat.blocks.init.BlockInit;
|
||||||
|
import fr.neatmonster.nocheatplus.config.WorldConfigProvider;
|
||||||
|
import fr.neatmonster.nocheatplus.logging.LogUtil;
|
||||||
|
import fr.neatmonster.nocheatplus.utilities.BlockFlags;
|
||||||
|
|
||||||
|
public class BlocksMC1_8 implements BlockPropertiesSetup {
|
||||||
|
|
||||||
|
public BlocksMC1_8() {
|
||||||
|
BlockInit.assertMaterialNameMatch(166, "barrier");
|
||||||
|
BlockInit.assertMaterialNameMatch(165, "slime", "block");
|
||||||
|
BlockInit.assertMaterialNameMatch(187, "fence", "gate");
|
||||||
|
BlockInit.assertMaterialNameMatch(176, "banner");
|
||||||
|
BlockInit.assertMaterialNameMatch(169, "sea", "lantern");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setupBlockProperties(WorldConfigProvider<?> worldConfigProvider) {
|
||||||
|
// 165(SLIME_BLOCK
|
||||||
|
BlockInit.setAs(165, Material.TNT); // Full block, instant break.
|
||||||
|
|
||||||
|
// 166(BARRIER
|
||||||
|
BlockInit.setAs(166, Material.BEDROCK); // Full block, unbreakable.
|
||||||
|
|
||||||
|
// 167(IRON_TRAP_DOOR
|
||||||
|
BlockFlags.setFlagsAs(167, Material.TRAP_DOOR);
|
||||||
|
BlockInit.setPropsAs(167, Material.IRON_DOOR_BLOCK);
|
||||||
|
|
||||||
|
// 168(PRISMARINE
|
||||||
|
BlockInit.setAs(168, Material.STONE);
|
||||||
|
|
||||||
|
// 169(SEA_LANTERN
|
||||||
|
BlockInit.setAs(169, Material.REDSTONE_LAMP_OFF);
|
||||||
|
|
||||||
|
// 176(STANDING_BANNER
|
||||||
|
BlockInit.setInstantAir(176);
|
||||||
|
|
||||||
|
// 177(WALL_BANNER
|
||||||
|
BlockInit.setInstantAir(177);
|
||||||
|
|
||||||
|
// 178(DAYLIGHT_DETECTOR_INVERTED
|
||||||
|
BlockInit.setAs(178, Material.DAYLIGHT_DETECTOR);
|
||||||
|
|
||||||
|
// 179(RED_SANDSTONE
|
||||||
|
BlockInit.setAs(179, Material.SANDSTONE);
|
||||||
|
|
||||||
|
// 180(RED_SANDSTONE_STAIRS
|
||||||
|
BlockInit.setAs(180, Material.SANDSTONE_STAIRS);
|
||||||
|
|
||||||
|
// 181(DOUBLE_STEP_2
|
||||||
|
BlockInit.setAs(181, Material.DOUBLE_STEP); // TODO: red sandstone / prismarine ?
|
||||||
|
|
||||||
|
// 182(STEP_2
|
||||||
|
BlockInit.setAs(182, Material.STEP); // TODO: red sandstone / prismarine ?
|
||||||
|
|
||||||
|
// 183(SPRUCE_FENCE_GATE
|
||||||
|
BlockInit.setAs(183, Material.FENCE_GATE);
|
||||||
|
|
||||||
|
// 184(BIRCH_FENCE_GATE
|
||||||
|
BlockInit.setAs(184, Material.FENCE_GATE);
|
||||||
|
|
||||||
|
// 185(JUNGLE_FENCE_GATE
|
||||||
|
BlockInit.setAs(185, Material.FENCE_GATE);
|
||||||
|
|
||||||
|
// 186(DARK_OAK_FENCE_GATE
|
||||||
|
BlockInit.setAs(186, Material.FENCE_GATE);
|
||||||
|
|
||||||
|
// 187(ACACIA_FENCE_GATE
|
||||||
|
BlockInit.setAs(187, Material.FENCE_GATE);
|
||||||
|
|
||||||
|
// 188(SPRUCE_FENCE
|
||||||
|
BlockInit.setAs(188, Material.FENCE);
|
||||||
|
|
||||||
|
// 189(BIRCH_FENCE
|
||||||
|
BlockInit.setAs(189, Material.FENCE);
|
||||||
|
|
||||||
|
// 190(JUNGLE_FENCE
|
||||||
|
BlockInit.setAs(190, Material.FENCE);
|
||||||
|
|
||||||
|
// 191(DARK_OAK_FENCE
|
||||||
|
BlockInit.setAs(191, Material.FENCE);
|
||||||
|
|
||||||
|
// 192(ACACIA_FENCE
|
||||||
|
BlockInit.setAs(192, Material.FENCE);
|
||||||
|
|
||||||
|
// 193(SPRUCE_DOOR
|
||||||
|
BlockInit.setAs(193, Material.WOODEN_DOOR);
|
||||||
|
|
||||||
|
// 194(BIRCH_DOOR
|
||||||
|
BlockInit.setAs(194, Material.WOODEN_DOOR);
|
||||||
|
|
||||||
|
// 195(JUNGLE_DOOR
|
||||||
|
BlockInit.setAs(195, Material.WOODEN_DOOR);
|
||||||
|
|
||||||
|
// 196(ACACIA_DOOR
|
||||||
|
BlockInit.setAs(196, Material.WOODEN_DOOR);
|
||||||
|
|
||||||
|
// 197(DARK_OAK_DOOR
|
||||||
|
BlockInit.setAs(197, Material.WOODEN_DOOR);
|
||||||
|
|
||||||
|
LogUtil.logInfo("[NoCheatPlus] Added block-info for Minecraft 1.8 blocks.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,6 +17,7 @@ public class VanillaBlocksFactory implements BlockPropertiesSetup{
|
|||||||
setups.add(new BlocksMC1_5());
|
setups.add(new BlocksMC1_5());
|
||||||
setups.add(new BlocksMC1_6_1());
|
setups.add(new BlocksMC1_6_1());
|
||||||
setups.add(new BlocksMC1_7_2());
|
setups.add(new BlocksMC1_7_2());
|
||||||
|
setups.add(new BlocksMC1_8());
|
||||||
}
|
}
|
||||||
catch(Throwable t){}
|
catch(Throwable t){}
|
||||||
for (final BlockPropertiesSetup setup : setups){
|
for (final BlockPropertiesSetup setup : setups){
|
||||||
|
Loading…
Reference in New Issue
Block a user