Fix several issues

-OnGround check for half-blocks and walls/fences/gates
-Improvements to LegacyMats item list
This commit is contained in:
ThisTestUser
2022-09-26 20:05:10 -04:00
parent 1d5a796b8c
commit e90bf3a46c
3 changed files with 142 additions and 40 deletions

View File

@@ -10,7 +10,6 @@ public class LegacyMats {
public static final Set<Material> AIR = new HashSet<>(Arrays.asList(
Material.WATER,
Material.OAK_TRAPDOOR,
Material.FIRE,
Material.LAVA,
Material.SNOW,
@@ -36,33 +35,64 @@ public class LegacyMats {
Material.FIRE,
Material.LAVA,
Material.CAVE_AIR,
Material.VOID_AIR,
Material.AIR,
Material.SOUL_FIRE
));
public static final Set<Material> SHOVEL = new HashSet<>(Arrays.asList(
Material.CLAY,
Material.DIRT,
Material.GRASS_BLOCK,
Material.COARSE_DIRT,
Material.PODZOL,
Material.MYCELIUM,
Material.GRAVEL,
Material.MUD,
Material.MUDDY_MANGROVE_ROOTS,
Material.SAND,
Material.SNOW
Material.RED_SAND,
Material.SOUL_SAND,
Material.SOUL_SOIL,
Material.SNOW,
Material.SNOW_BLOCK,
Material.BLACK_CONCRETE_POWDER,
Material.BLUE_CONCRETE_POWDER,
Material.CYAN_CONCRETE_POWDER,
Material.GRAY_CONCRETE_POWDER,
Material.GREEN_CONCRETE_POWDER,
Material.LIGHT_BLUE_CONCRETE_POWDER,
Material.LIGHT_GRAY_CONCRETE_POWDER,
Material.LIME_CONCRETE_POWDER,
Material.MAGENTA_CONCRETE_POWDER,
Material.ORANGE_CONCRETE_POWDER,
Material.PINK_CONCRETE_POWDER,
Material.PURPLE_CONCRETE_POWDER,
Material.RED_CONCRETE_POWDER,
Material.WHITE_CONCRETE_POWDER,
Material.YELLOW_CONCRETE_POWDER
));
public static final Set<Material> AXE = new HashSet<>(Arrays.asList(
Material.OAK_PLANKS, Material.OAK_DOOR, Material.OAK_FENCE, Material.OAK_FENCE_GATE, Material.OAK_LOG, Material.OAK_PLANKS,
Material.OAK_PLANKS, Material.OAK_DOOR, Material.OAK_FENCE, Material.OAK_FENCE_GATE, Material.OAK_LOG,
Material.OAK_SIGN, Material.OAK_SLAB, Material.OAK_STAIRS, Material.OAK_TRAPDOOR, Material.OAK_WALL_SIGN, Material.OAK_WOOD,
Material.DARK_OAK_PLANKS, Material.DARK_OAK_DOOR, Material.DARK_OAK_FENCE, Material.DARK_OAK_FENCE_GATE, Material.DARK_OAK_LOG, Material.DARK_OAK_PLANKS,
Material.DARK_OAK_PLANKS, Material.DARK_OAK_DOOR, Material.DARK_OAK_FENCE, Material.DARK_OAK_FENCE_GATE, Material.DARK_OAK_LOG,
Material.DARK_OAK_SIGN, Material.DARK_OAK_SLAB, Material.DARK_OAK_STAIRS, Material.DARK_OAK_TRAPDOOR, Material.DARK_OAK_WALL_SIGN, Material.DARK_OAK_WOOD,
Material.ACACIA_PLANKS, Material.ACACIA_DOOR, Material.ACACIA_FENCE, Material.ACACIA_FENCE_GATE, Material.ACACIA_LOG, Material.ACACIA_PLANKS,
Material.ACACIA_PLANKS, Material.ACACIA_DOOR, Material.ACACIA_FENCE, Material.ACACIA_FENCE_GATE, Material.ACACIA_LOG,
Material.ACACIA_SIGN, Material.ACACIA_SLAB, Material.ACACIA_STAIRS, Material.ACACIA_TRAPDOOR, Material.ACACIA_WALL_SIGN, Material.ACACIA_WOOD,
Material.BIRCH_PLANKS, Material.BIRCH_DOOR, Material.BIRCH_FENCE, Material.BIRCH_FENCE_GATE, Material.BIRCH_LOG, Material.BIRCH_PLANKS,
Material.BIRCH_PLANKS, Material.BIRCH_DOOR, Material.BIRCH_FENCE, Material.BIRCH_FENCE_GATE, Material.BIRCH_LOG,
Material.BIRCH_SIGN, Material.BIRCH_SLAB, Material.BIRCH_STAIRS, Material.BIRCH_TRAPDOOR, Material.BIRCH_WALL_SIGN, Material.BIRCH_WOOD,
Material.JUNGLE_PLANKS, Material.JUNGLE_DOOR, Material.JUNGLE_FENCE, Material.JUNGLE_FENCE_GATE, Material.JUNGLE_LOG, Material.JUNGLE_PLANKS,
Material.JUNGLE_PLANKS, Material.JUNGLE_DOOR, Material.JUNGLE_FENCE, Material.JUNGLE_FENCE_GATE, Material.JUNGLE_LOG,
Material.JUNGLE_SIGN, Material.JUNGLE_SLAB, Material.JUNGLE_STAIRS, Material.JUNGLE_TRAPDOOR, Material.JUNGLE_WALL_SIGN, Material.JUNGLE_WOOD,
Material.SPRUCE_PLANKS, Material.SPRUCE_DOOR, Material.SPRUCE_FENCE, Material.SPRUCE_FENCE_GATE, Material.SPRUCE_LOG, Material.SPRUCE_PLANKS,
Material.SPRUCE_PLANKS, Material.SPRUCE_DOOR, Material.SPRUCE_FENCE, Material.SPRUCE_FENCE_GATE, Material.SPRUCE_LOG,
Material.SPRUCE_SIGN, Material.SPRUCE_SLAB, Material.SPRUCE_STAIRS, Material.SPRUCE_TRAPDOOR, Material.SPRUCE_WALL_SIGN, Material.SPRUCE_WOOD,
Material.CRIMSON_PLANKS, Material.CRIMSON_DOOR, Material.CRIMSON_FENCE, Material.CRIMSON_FENCE_GATE, Material.CRIMSON_PLANKS,
Material.MANGROVE_PLANKS, Material.MANGROVE_DOOR, Material.MANGROVE_FENCE, Material.MANGROVE_FENCE_GATE, Material.MANGROVE_LOG,
Material.MANGROVE_SIGN, Material.MANGROVE_SLAB, Material.MANGROVE_STAIRS, Material.MANGROVE_TRAPDOOR, Material.MANGROVE_WALL_SIGN, Material.MANGROVE_WOOD,
Material.CRIMSON_PLANKS, Material.CRIMSON_DOOR, Material.CRIMSON_FENCE, Material.CRIMSON_FENCE_GATE, Material.CRIMSON_STEM,
Material.CRIMSON_SIGN, Material.CRIMSON_SLAB, Material.CRIMSON_STAIRS, Material.CRIMSON_TRAPDOOR, Material.CRIMSON_WALL_SIGN,
Material.WARPED_PLANKS, Material.WARPED_DOOR, Material.WARPED_FENCE, Material.WARPED_FENCE_GATE, Material.WARPED_PLANKS,
Material.WARPED_SIGN, Material.WARPED_SLAB, Material.WARPED_STAIRS, Material.WARPED_TRAPDOOR, Material.WARPED_WALL_SIGN
Material.WARPED_PLANKS, Material.WARPED_DOOR, Material.WARPED_FENCE, Material.WARPED_FENCE_GATE, Material.WARPED_STEM,
Material.WARPED_SIGN, Material.WARPED_SLAB, Material.WARPED_STAIRS, Material.WARPED_TRAPDOOR, Material.WARPED_WALL_SIGN,
Material.CHEST, Material.TRAPPED_CHEST
));
public static final Set<Material> BREAK = new HashSet<>(Arrays.asList(
@@ -145,24 +175,75 @@ public class LegacyMats {
Material.NETHER_BRICK_FENCE,
Material.SPRUCE_FENCE,
Material.WARPED_FENCE,
Material.MANGROVE_FENCE,
Material.COBBLESTONE_WALL,
Material.MOSSY_COBBLESTONE_WALL,
Material.MOSSY_STONE_BRICK_WALL,
Material.STONE_BRICK_WALL,
Material.PRISMARINE_WALL,
Material.ANDESITE_WALL,
Material.BLACKSTONE_WALL,
Material.POLISHED_BLACKSTONE_BRICK_WALL,
Material.POLISHED_BLACKSTONE_WALL,
Material.BRICK_WALL,
Material.GRANITE_WALL,
Material.DIORITE_WALL,
Material.SANDSTONE_WALL,
Material.RED_SANDSTONE_WALL,
Material.RED_NETHER_BRICK_WALL,
Material.IRON_BARS,
Material.COBWEB
Material.NETHER_BRICK_WALL,
Material.END_STONE_BRICK_WALL,
Material.POLISHED_DEEPSLATE_WALL,
Material.COBBLED_DEEPSLATE_WALL,
Material.DEEPSLATE_BRICK_WALL,
Material.DEEPSLATE_TILE_WALL,
Material.MUD_BRICK_WALL
));
public static final Set<Material> GATES = new HashSet<>(Arrays.asList(
Material.ACACIA_FENCE_GATE,
Material.BIRCH_FENCE_GATE,
Material.DARK_OAK_FENCE_GATE,
Material.JUNGLE_FENCE_GATE,
Material.OAK_FENCE_GATE,
Material.SPRUCE_FENCE_GATE,
Material.MANGROVE_FENCE_GATE,
Material.CRIMSON_FENCE_GATE,
Material.WARPED_FENCE_GATE
));
public static final Set<Material> OBSTACLES = new HashSet<>(Arrays.asList(
Material.IRON_BARS,
Material.CHAIN,
Material.END_ROD,
Material.COBWEB,
Material.FLOWER_POT,
Material.GLASS_PANE
));
public static final Set<Material> IGNORED = new HashSet<>(Arrays.asList(
Material.ACACIA_BUTTON,
Material.BIRCH_BUTTON,
Material.CRIMSON_BUTTON,
Material.DARK_OAK_BUTTON,
Material.JUNGLE_BUTTON,
Material.MANGROVE_BUTTON,
Material.OAK_BUTTON,
Material.POLISHED_BLACKSTONE_BUTTON,
Material.SPRUCE_BUTTON,
Material.STONE_BUTTON,
Material.WARPED_BUTTON,
Material.TWISTING_VINES,
Material.TWISTING_VINES_PLANT
));
public static final Set<Material> LEAVES = new HashSet<>(Arrays.asList(
Material.BIRCH_LEAVES,
Material.DARK_OAK_LEAVES,
Material.JUNGLE_LEAVES,
Material.OAK_LEAVES,
Material.SPRUCE_LEAVES
Material.SPRUCE_LEAVES,
Material.FLOWERING_AZALEA_LEAVES,
Material.MANGROVE_LEAVES
));
}

View File

@@ -1,11 +1,7 @@
package net.nuggetmc.tplus.api.utils;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -29,24 +25,8 @@ public class BotUtils {
return randomSteveUUID();
}
public static boolean solidAt(Location loc) { // not perfect, still cuts corners of fences
Block block = loc.getBlock();
BoundingBox box = block.getBoundingBox();
Vector position = loc.toVector();
double x = position.getX();
double y = position.getY();
double z = position.getZ();
double minX = box.getMinX();
double minY = box.getMinY();
double minZ = box.getMinZ();
double maxX = box.getMaxX();
double maxY = box.getMaxY();
double maxZ = box.getMaxZ();
return x > minX && x < maxX && y > minY && y < maxY && z > minZ && z < maxZ;
public static boolean solidAt(BoundingBox playerBox, BoundingBox blockBox) {
return playerBox.overlaps(blockBox);
}
}