Fix several issues
-OnGround check for half-blocks and walls/fences/gates -Improvements to LegacyMats item list
This commit is contained in:
@@ -10,7 +10,6 @@ public class LegacyMats {
|
|||||||
|
|
||||||
public static final Set<Material> AIR = new HashSet<>(Arrays.asList(
|
public static final Set<Material> AIR = new HashSet<>(Arrays.asList(
|
||||||
Material.WATER,
|
Material.WATER,
|
||||||
Material.OAK_TRAPDOOR,
|
|
||||||
Material.FIRE,
|
Material.FIRE,
|
||||||
Material.LAVA,
|
Material.LAVA,
|
||||||
Material.SNOW,
|
Material.SNOW,
|
||||||
@@ -36,33 +35,64 @@ public class LegacyMats {
|
|||||||
Material.FIRE,
|
Material.FIRE,
|
||||||
Material.LAVA,
|
Material.LAVA,
|
||||||
Material.CAVE_AIR,
|
Material.CAVE_AIR,
|
||||||
|
Material.VOID_AIR,
|
||||||
|
Material.AIR,
|
||||||
Material.SOUL_FIRE
|
Material.SOUL_FIRE
|
||||||
));
|
));
|
||||||
|
|
||||||
public static final Set<Material> SHOVEL = new HashSet<>(Arrays.asList(
|
public static final Set<Material> SHOVEL = new HashSet<>(Arrays.asList(
|
||||||
|
Material.CLAY,
|
||||||
Material.DIRT,
|
Material.DIRT,
|
||||||
|
Material.GRASS_BLOCK,
|
||||||
|
Material.COARSE_DIRT,
|
||||||
|
Material.PODZOL,
|
||||||
|
Material.MYCELIUM,
|
||||||
Material.GRAVEL,
|
Material.GRAVEL,
|
||||||
|
Material.MUD,
|
||||||
|
Material.MUDDY_MANGROVE_ROOTS,
|
||||||
Material.SAND,
|
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(
|
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.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.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.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.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.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.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.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_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.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(
|
public static final Set<Material> BREAK = new HashSet<>(Arrays.asList(
|
||||||
@@ -145,17 +175,66 @@ public class LegacyMats {
|
|||||||
Material.NETHER_BRICK_FENCE,
|
Material.NETHER_BRICK_FENCE,
|
||||||
Material.SPRUCE_FENCE,
|
Material.SPRUCE_FENCE,
|
||||||
Material.WARPED_FENCE,
|
Material.WARPED_FENCE,
|
||||||
|
Material.MANGROVE_FENCE,
|
||||||
Material.COBBLESTONE_WALL,
|
Material.COBBLESTONE_WALL,
|
||||||
|
Material.MOSSY_COBBLESTONE_WALL,
|
||||||
|
Material.MOSSY_STONE_BRICK_WALL,
|
||||||
|
Material.STONE_BRICK_WALL,
|
||||||
|
Material.PRISMARINE_WALL,
|
||||||
Material.ANDESITE_WALL,
|
Material.ANDESITE_WALL,
|
||||||
Material.BLACKSTONE_WALL,
|
Material.BLACKSTONE_WALL,
|
||||||
|
Material.POLISHED_BLACKSTONE_BRICK_WALL,
|
||||||
|
Material.POLISHED_BLACKSTONE_WALL,
|
||||||
Material.BRICK_WALL,
|
Material.BRICK_WALL,
|
||||||
Material.GRANITE_WALL,
|
Material.GRANITE_WALL,
|
||||||
Material.DIORITE_WALL,
|
Material.DIORITE_WALL,
|
||||||
Material.SANDSTONE_WALL,
|
Material.SANDSTONE_WALL,
|
||||||
Material.RED_SANDSTONE_WALL,
|
Material.RED_SANDSTONE_WALL,
|
||||||
Material.RED_NETHER_BRICK_WALL,
|
Material.RED_NETHER_BRICK_WALL,
|
||||||
Material.IRON_BARS,
|
Material.NETHER_BRICK_WALL,
|
||||||
Material.COBWEB
|
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(
|
public static final Set<Material> LEAVES = new HashSet<>(Arrays.asList(
|
||||||
@@ -163,6 +242,8 @@ public class LegacyMats {
|
|||||||
Material.DARK_OAK_LEAVES,
|
Material.DARK_OAK_LEAVES,
|
||||||
Material.JUNGLE_LEAVES,
|
Material.JUNGLE_LEAVES,
|
||||||
Material.OAK_LEAVES,
|
Material.OAK_LEAVES,
|
||||||
Material.SPRUCE_LEAVES
|
Material.SPRUCE_LEAVES,
|
||||||
|
Material.FLOWERING_AZALEA_LEAVES,
|
||||||
|
Material.MANGROVE_LEAVES
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
package net.nuggetmc.tplus.api.utils;
|
package net.nuggetmc.tplus.api.utils;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.util.BoundingBox;
|
import org.bukkit.util.BoundingBox;
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -30,23 +26,7 @@ public class BotUtils {
|
|||||||
return randomSteveUUID();
|
return randomSteveUUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean solidAt(Location loc) { // not perfect, still cuts corners of fences
|
public static boolean solidAt(BoundingBox playerBox, BoundingBox blockBox) {
|
||||||
Block block = loc.getBlock();
|
return playerBox.overlaps(blockBox);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ package net.nuggetmc.tplus.bot;
|
|||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import io.netty.util.concurrent.Future;
|
|
||||||
import io.netty.util.concurrent.GenericFutureListener;
|
|
||||||
import net.minecraft.network.Connection;
|
import net.minecraft.network.Connection;
|
||||||
import net.minecraft.network.PacketSendListener;
|
import net.minecraft.network.PacketSendListener;
|
||||||
import net.minecraft.network.protocol.Packet;
|
import net.minecraft.network.protocol.Packet;
|
||||||
@@ -27,6 +25,7 @@ import net.minecraft.world.phys.Vec3;
|
|||||||
import net.nuggetmc.tplus.TerminatorPlus;
|
import net.nuggetmc.tplus.TerminatorPlus;
|
||||||
import net.nuggetmc.tplus.api.Terminator;
|
import net.nuggetmc.tplus.api.Terminator;
|
||||||
import net.nuggetmc.tplus.api.agent.Agent;
|
import net.nuggetmc.tplus.api.agent.Agent;
|
||||||
|
import net.nuggetmc.tplus.api.agent.legacyagent.LegacyMats;
|
||||||
import net.nuggetmc.tplus.api.agent.legacyagent.ai.NeuralNetwork;
|
import net.nuggetmc.tplus.api.agent.legacyagent.ai.NeuralNetwork;
|
||||||
import net.nuggetmc.tplus.api.event.BotDamageByPlayerEvent;
|
import net.nuggetmc.tplus.api.event.BotDamageByPlayerEvent;
|
||||||
import net.nuggetmc.tplus.api.event.BotFallDamageEvent;
|
import net.nuggetmc.tplus.api.event.BotFallDamageEvent;
|
||||||
@@ -35,6 +34,7 @@ import net.nuggetmc.tplus.api.utils.*;
|
|||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.data.type.Candle;
|
||||||
import org.bukkit.craftbukkit.v1_19_R1.CraftEquipmentSlot;
|
import org.bukkit.craftbukkit.v1_19_R1.CraftEquipmentSlot;
|
||||||
import org.bukkit.craftbukkit.v1_19_R1.CraftServer;
|
import org.bukkit.craftbukkit.v1_19_R1.CraftServer;
|
||||||
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
|
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
|
||||||
@@ -45,6 +45,7 @@ import org.bukkit.entity.Damageable;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
|
import org.bukkit.util.BoundingBox;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -537,21 +538,61 @@ public class Bot extends ServerPlayer implements Terminator {
|
|||||||
box.minZ,
|
box.minZ,
|
||||||
box.maxZ
|
box.maxZ
|
||||||
};
|
};
|
||||||
|
BoundingBox playerBox = new BoundingBox(box.minX, position().y - 0.01, box.minZ,
|
||||||
|
box.maxX, position().y + getBbHeight(), box.maxZ);
|
||||||
|
|
||||||
for (double x : xVals) {
|
for (double x : xVals) {
|
||||||
for (double z : zVals) {
|
for (double z : zVals) {
|
||||||
Location loc = new Location(world, x, position().y - 0.01, z);
|
Location loc = new Location(world, x, position().y - 0.01, z);
|
||||||
Block block = world.getBlockAt(loc);
|
Block block = world.getBlockAt(loc);
|
||||||
|
|
||||||
if (block.getType().isSolid() && BotUtils.solidAt(loc)) {
|
if ((block.getType().isSolid() || canStandOn(block.getType())) && BotUtils.solidAt(playerBox, block.getBoundingBox())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Fence/wall check
|
||||||
|
for (double x : xVals) {
|
||||||
|
for (double z : zVals) {
|
||||||
|
Location loc = new Location(world, x, position().y - 0.51, z);
|
||||||
|
Block block = world.getBlockAt(loc);
|
||||||
|
BoundingBox blockBox = loc.getBlock().getBoundingBox();
|
||||||
|
BoundingBox modifiedBox = new BoundingBox(blockBox.getMinX(), blockBox.getMinY(), blockBox.getMinZ(), blockBox.getMaxX(),
|
||||||
|
blockBox.getMinY() + 1.5, blockBox.getMaxZ());
|
||||||
|
|
||||||
|
if ((LegacyMats.FENCE.contains(block.getType()) || LegacyMats.GATES.contains(block.getType()))
|
||||||
|
&& block.getType().isSolid() && BotUtils.solidAt(playerBox, modifiedBox)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks for non-solid blocks that can hold an entity up.
|
||||||
|
*/
|
||||||
|
private boolean canStandOn(Material mat)
|
||||||
|
{
|
||||||
|
if(mat == Material.END_ROD || mat == Material.FLOWER_POT || mat == Material.REPEATER || mat == Material.COMPARATOR
|
||||||
|
|| mat == Material.SNOW || mat == Material.LADDER || mat == Material.VINE)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(mat == Material.BLACK_CARPET || mat == Material.BLUE_CARPET || mat == Material.BROWN_CARPET || mat == Material.CYAN_CARPET
|
||||||
|
|| mat == Material.GRAY_CARPET || mat == Material.GREEN_CARPET || mat == Material.LIGHT_BLUE_CARPET
|
||||||
|
|| mat == Material.LIGHT_GRAY_CARPET || mat == Material.LIME_CARPET || mat == Material.MAGENTA_CARPET
|
||||||
|
|| mat == Material.MOSS_CARPET || mat == Material.ORANGE_CARPET || mat == Material.PINK_CARPET
|
||||||
|
|| mat == Material.PURPLE_CARPET || mat == Material.RED_CARPET || mat == Material.WHITE_CARPET
|
||||||
|
|| mat == Material.YELLOW_CARPET)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(mat.data == Candle.class)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBotOnGround() {
|
public boolean isBotOnGround() {
|
||||||
return groundTicks != 0;
|
return groundTicks != 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user