mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-06-11 20:13:55 +00:00
As Jesse would say... *
This commit is contained in:
@ -6,7 +6,6 @@ import com.boydti.fawe.bukkit.chat.BukkitChatManager;
|
||||
import com.boydti.fawe.bukkit.listener.AsyncTabCompleteListener;
|
||||
import com.boydti.fawe.bukkit.listener.BrushListener;
|
||||
import com.boydti.fawe.bukkit.listener.BukkitImageListener;
|
||||
import com.boydti.fawe.bukkit.listener.CFIPacketListener;
|
||||
import com.boydti.fawe.bukkit.listener.RenderListener;
|
||||
import com.boydti.fawe.bukkit.listener.SyncTabCompleteListener;
|
||||
import com.boydti.fawe.bukkit.regions.ASkyBlockHook;
|
||||
@ -429,7 +428,7 @@ public class FaweBukkit implements IFawe, Listener {
|
||||
final Plugin factionsPlugin = Bukkit.getServer().getPluginManager().getPlugin("Factions");
|
||||
if ((factionsPlugin != null) && factionsPlugin.isEnabled()) {
|
||||
try {
|
||||
managers.add(new FactionsFeature(factionsPlugin, this));
|
||||
managers.add(new FactionsFeature(factionsPlugin));
|
||||
Fawe.debug("Plugin 'Factions' found. Using it now.");
|
||||
} catch (final Throwable e) {
|
||||
try {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.boydti.fawe.bukkit.regions;
|
||||
|
||||
import com.boydti.fawe.bukkit.FaweBukkit;
|
||||
import com.boydti.fawe.object.FawePlayer;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
@ -13,11 +12,9 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class FactionsFeature extends BukkitMaskManager implements Listener {
|
||||
FaweBukkit plugin;
|
||||
|
||||
public FactionsFeature(final Plugin factionsPlugin, final FaweBukkit p3) {
|
||||
public FactionsFeature(final Plugin factionsPlugin) {
|
||||
super(factionsPlugin.getName());
|
||||
this.plugin = p3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -296,7 +296,7 @@ public class BukkitChunk_1_13 extends IntFaweChunk<Chunk, BukkitQueue_1_13> {
|
||||
|
||||
@Override
|
||||
public Chunk getNewChunk() {
|
||||
return ((BukkitQueue_1_13) getParent()).getWorld().getChunkAt(getX(), getZ());
|
||||
return getParent().getWorld().getChunkAt(getX(), getZ());
|
||||
}
|
||||
|
||||
public void optimize() {
|
||||
|
@ -1,12 +1,10 @@
|
||||
package com.boydti.fawe.bukkit.v1_13;
|
||||
|
||||
import com.boydti.fawe.Fawe;
|
||||
import com.boydti.fawe.FaweCache;
|
||||
import com.boydti.fawe.bukkit.BukkitPlayer;
|
||||
import com.boydti.fawe.bukkit.adapter.v1_13_1.BlockMaterial_1_13;
|
||||
import com.boydti.fawe.bukkit.adapter.v1_13_1.Spigot_v1_13_R2;
|
||||
import com.boydti.fawe.bukkit.v0.BukkitQueue_0;
|
||||
import com.boydti.fawe.config.BBC;
|
||||
import com.boydti.fawe.config.Settings;
|
||||
import com.boydti.fawe.example.IntFaweChunk;
|
||||
import com.boydti.fawe.jnbt.anvil.BitArray4096;
|
||||
@ -26,32 +24,7 @@ import com.sk89q.worldedit.world.block.BlockState;
|
||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufAllocator;
|
||||
import net.minecraft.server.v1_13_R2.BiomeBase;
|
||||
import net.minecraft.server.v1_13_R2.Block;
|
||||
import net.minecraft.server.v1_13_R2.BlockPosition;
|
||||
import net.minecraft.server.v1_13_R2.ChunkProviderServer;
|
||||
import net.minecraft.server.v1_13_R2.ChunkSection;
|
||||
import net.minecraft.server.v1_13_R2.DataBits;
|
||||
import net.minecraft.server.v1_13_R2.DataPalette;
|
||||
import net.minecraft.server.v1_13_R2.DataPaletteBlock;
|
||||
import net.minecraft.server.v1_13_R2.DataPaletteHash;
|
||||
import net.minecraft.server.v1_13_R2.DataPaletteLinear;
|
||||
import net.minecraft.server.v1_13_R2.Entity;
|
||||
import net.minecraft.server.v1_13_R2.EntityPlayer;
|
||||
import net.minecraft.server.v1_13_R2.EnumSkyBlock;
|
||||
import net.minecraft.server.v1_13_R2.GameProfileSerializer;
|
||||
import net.minecraft.server.v1_13_R2.IBlockData;
|
||||
import net.minecraft.server.v1_13_R2.NBTTagCompound;
|
||||
import net.minecraft.server.v1_13_R2.Packet;
|
||||
import net.minecraft.server.v1_13_R2.PacketDataSerializer;
|
||||
import net.minecraft.server.v1_13_R2.PacketPlayOutMultiBlockChange;
|
||||
import net.minecraft.server.v1_13_R2.PlayerChunk;
|
||||
import net.minecraft.server.v1_13_R2.PlayerChunkMap;
|
||||
import net.minecraft.server.v1_13_R2.RegistryID;
|
||||
import net.minecraft.server.v1_13_R2.TileEntity;
|
||||
import net.minecraft.server.v1_13_R2.WorldChunkManager;
|
||||
import net.minecraft.server.v1_13_R2.WorldData;
|
||||
import net.minecraft.server.v1_13_R2.WorldServer;
|
||||
import net.minecraft.server.v1_13_R2.*;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.CraftChunk;
|
||||
@ -65,51 +38,50 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.LongAdder;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R2.Chunk, ChunkSection[], ChunkSection> {
|
||||
|
||||
protected final static Field fieldBits;
|
||||
protected final static Field fieldPalette;
|
||||
protected final static Field fieldSize;
|
||||
final static Field fieldBits;
|
||||
final static Field fieldPalette;
|
||||
final static Field fieldSize;
|
||||
|
||||
protected final static Field fieldHashBlocks;
|
||||
protected final static Field fieldLinearBlocks;
|
||||
protected final static Field fieldHashIndex;
|
||||
protected final static Field fieldRegistryb;
|
||||
protected final static Field fieldRegistryc;
|
||||
protected final static Field fieldRegistryd;
|
||||
protected final static Field fieldRegistrye;
|
||||
protected final static Field fieldRegistryf;
|
||||
final static Field fieldHashBlocks;
|
||||
final static Field fieldLinearBlocks;
|
||||
private final static Field fieldHashIndex;
|
||||
final static Field fieldRegistryb;
|
||||
final static Field fieldRegistryc;
|
||||
final static Field fieldRegistryd;
|
||||
final static Field fieldRegistrye;
|
||||
final static Field fieldRegistryf;
|
||||
|
||||
protected final static Field fieldLinearIndex;
|
||||
protected final static Field fieldDefaultBlock;
|
||||
final static Field fieldLinearIndex;
|
||||
final static Field fieldDefaultBlock;
|
||||
|
||||
protected final static Field fieldFluidCount;
|
||||
protected final static Field fieldTickingBlockCount;
|
||||
protected final static Field fieldNonEmptyBlockCount;
|
||||
protected final static Field fieldSection;
|
||||
protected final static Field fieldLiquidCount;
|
||||
protected final static Field fieldEmittedLight;
|
||||
protected final static Field fieldSkyLight;
|
||||
private final static Field fieldFluidCount;
|
||||
final static Field fieldTickingBlockCount;
|
||||
final static Field fieldNonEmptyBlockCount;
|
||||
final static Field fieldSection;
|
||||
final static Field fieldLiquidCount;
|
||||
private final static Field fieldEmittedLight;
|
||||
private final static Field fieldSkyLight;
|
||||
|
||||
|
||||
// protected final static Field fieldBiomes;
|
||||
|
||||
protected final static Field fieldChunkGenerator;
|
||||
protected final static Field fieldSeed;
|
||||
private final static Field fieldChunkGenerator;
|
||||
private final static Field fieldSeed;
|
||||
// protected final static Field fieldBiomeCache;
|
||||
// protected final static Field fieldBiomes2;
|
||||
protected final static Field fieldGenLayer1;
|
||||
protected final static Field fieldGenLayer2;
|
||||
protected final static Field fieldSave;
|
||||
private final static Field fieldGenLayer1;
|
||||
private final static Field fieldGenLayer2;
|
||||
private final static Field fieldSave;
|
||||
// protected final static MutableGenLayer genLayer;
|
||||
protected final static ChunkSection emptySection;
|
||||
private final static ChunkSection emptySection;
|
||||
|
||||
// protected static final Method methodResize;
|
||||
|
||||
protected final static Field fieldDirtyCount;
|
||||
protected final static Field fieldDirtyBits;
|
||||
private final static Field fieldDirtyCount;
|
||||
private final static Field fieldDirtyBits;
|
||||
|
||||
static {
|
||||
try {
|
||||
@ -131,10 +103,8 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
fieldTickingBlockCount.setAccessible(true);
|
||||
fieldNonEmptyBlockCount.setAccessible(true);
|
||||
|
||||
|
||||
|
||||
// fieldBiomes = ChunkProviderGenerate.class.getDeclaredField("D"); // *
|
||||
// fieldBiomes.setAccessible(true);
|
||||
//fieldBiomes = ChunkProviderGenerate.class.getDeclaredField("D"); // *
|
||||
//fieldBiomes.setAccessible(true);
|
||||
|
||||
fieldChunkGenerator = ChunkProviderServer.class.getDeclaredField("chunkGenerator");
|
||||
fieldChunkGenerator.setAccessible(true);
|
||||
@ -680,7 +650,7 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
return playerChunk;
|
||||
}
|
||||
|
||||
public boolean sendChunk(PlayerChunk playerChunk, net.minecraft.server.v1_13_R2.Chunk nmsChunk, int mask) {
|
||||
private boolean sendChunk(PlayerChunk playerChunk, net.minecraft.server.v1_13_R2.Chunk nmsChunk, int mask) {
|
||||
if (playerChunk == null) {
|
||||
return false;
|
||||
}
|
||||
@ -813,7 +783,7 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
nmsWorld.r(pos);
|
||||
}
|
||||
|
||||
protected WorldServer nmsWorld;
|
||||
private WorldServer nmsWorld;
|
||||
|
||||
@Override
|
||||
public World getImpWorld() {
|
||||
@ -826,13 +796,13 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
}
|
||||
}
|
||||
|
||||
public static void setCount(int tickingBlockCount, int nonEmptyBlockCount, ChunkSection section) throws NoSuchFieldException, IllegalAccessException {
|
||||
static void setCount(int tickingBlockCount, int nonEmptyBlockCount, ChunkSection section) throws NoSuchFieldException, IllegalAccessException {
|
||||
fieldFluidCount.set(section, 0); // TODO FIXME
|
||||
fieldTickingBlockCount.set(section, tickingBlockCount);
|
||||
fieldNonEmptyBlockCount.set(section, nonEmptyBlockCount);
|
||||
}
|
||||
|
||||
public int getNonEmptyBlockCount(ChunkSection section) throws IllegalAccessException {
|
||||
int getNonEmptyBlockCount(ChunkSection section) throws IllegalAccessException {
|
||||
return (int) fieldNonEmptyBlockCount.get(section);
|
||||
}
|
||||
|
||||
@ -841,7 +811,7 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
Arrays.fill(section.getEmittedLightArray().asBytes(), (byte) 0);
|
||||
}
|
||||
|
||||
public static ChunkSection newChunkSection(int y2, boolean flag, int[] blocks) {
|
||||
static ChunkSection newChunkSection(int y2, boolean flag, int[] blocks) {
|
||||
if (blocks == null) {
|
||||
return new ChunkSection(y2 << 4, flag);
|
||||
} else {
|
||||
@ -895,9 +865,7 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
// protected DataBits a;
|
||||
long[] bits = Arrays.copyOfRange(blockstates, 0, blockBitArrayEnd);
|
||||
DataBits nmsBits = new DataBits(bitsPerEntry, 4096, bits);
|
||||
DataPalette<IBlockData> palette;
|
||||
// palette = new DataPaletteHash<>(Block.REGISTRY_ID, bitsPerEntry, dataPaletteBlocks, GameProfileSerializer::d, GameProfileSerializer::a);
|
||||
palette = new DataPaletteLinear<>(Block.REGISTRY_ID, bitsPerEntry, dataPaletteBlocks, GameProfileSerializer::d);
|
||||
DataPalette<IBlockData> palette = new DataPaletteLinear<>(Block.REGISTRY_ID, bitsPerEntry, dataPaletteBlocks, GameProfileSerializer::d);
|
||||
|
||||
// set palette
|
||||
for (int i = 0; i < num_palette; i++) {
|
||||
@ -934,7 +902,7 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
return tile != null ? getTag(tile) : null;
|
||||
}
|
||||
|
||||
public CompoundTag getTag(TileEntity tile) {
|
||||
CompoundTag getTag(TileEntity tile) {
|
||||
try {
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
tile.save(tag); // readTagIntoEntity
|
||||
@ -950,7 +918,7 @@ public class BukkitQueue_1_13 extends BukkitQueue_0<net.minecraft.server.v1_13_R
|
||||
net.minecraft.server.v1_13_R2.Chunk c = ((CraftChunk) chunk).getHandle();
|
||||
c.mustSave = false;
|
||||
if (chunk.isLoaded()) {
|
||||
chunk.unload(false, false);
|
||||
chunk.unload(false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -4,15 +4,10 @@ import com.boydti.fawe.bukkit.wrapper.state.AsyncSign;
|
||||
import com.boydti.fawe.object.FaweQueue;
|
||||
import com.boydti.fawe.util.TaskManager;
|
||||
import com.sk89q.worldedit.WorldEditException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||
import com.sk89q.worldedit.world.block.BlockID;
|
||||
import com.sk89q.worldedit.world.block.BlockType;
|
||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||
|
||||
import org.bukkit.FluidCollisionMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -27,6 +22,10 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
import org.bukkit.util.RayTraceResult;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class AsyncBlock implements Block {
|
||||
|
||||
@ -69,27 +68,27 @@ public class AsyncBlock implements Block {
|
||||
return BlockTypes.getFromStateId(id).getInternalId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncBlock getRelative(int modX, int modY, int modZ) {
|
||||
return new AsyncBlock(world, queue, x + modX, y + modY, z + modZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncBlock getRelative(BlockFace face) {
|
||||
return this.getRelative(face.getModX(), face.getModY(), face.getModZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncBlock getRelative(BlockFace face, int distance) {
|
||||
return this.getRelative(face.getModX() * distance, face.getModY() * distance, face.getModZ() * distance);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public Material getType() {
|
||||
return getBlockData().getMaterial();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public BlockData getBlockData() {
|
||||
return BukkitAdapter.getBlockData(queue.getCachedCombinedId4Data(x, y, z, BlockTypes.AIR.getInternalId()));
|
||||
}
|
||||
@ -134,7 +133,7 @@ public class AsyncBlock implements Block {
|
||||
return (byte) queue.getEmmittedLight(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncWorld getWorld() {
|
||||
return world;
|
||||
}
|
||||
@ -154,7 +153,7 @@ public class AsyncBlock implements Block {
|
||||
return z;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public Location getLocation() {
|
||||
return new Location(world, x, y, z);
|
||||
}
|
||||
@ -163,20 +162,20 @@ public class AsyncBlock implements Block {
|
||||
public Location getLocation(Location loc) {
|
||||
if(loc != null) {
|
||||
loc.setWorld(this.getWorld());
|
||||
loc.setX((double)this.x);
|
||||
loc.setY((double)this.y);
|
||||
loc.setZ((double)this.z);
|
||||
loc.setX(this.x);
|
||||
loc.setY(this.y);
|
||||
loc.setZ(this.z);
|
||||
}
|
||||
return loc;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncChunk getChunk() {
|
||||
return world.getChunkAt(x >> 4, z >> 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockData(BlockData blockData) {
|
||||
public void setBlockData(@NotNull BlockData blockData) {
|
||||
try {
|
||||
queue.setBlock(x, y, z, BukkitAdapter.adapt(blockData));
|
||||
} catch (WorldEditException e) {
|
||||
@ -185,12 +184,12 @@ public class AsyncBlock implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockData(BlockData blockData, boolean b) {
|
||||
public void setBlockData(@NotNull BlockData blockData, boolean b) {
|
||||
setBlockData(blockData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(Material type) {
|
||||
public void setType(@NotNull Material type) {
|
||||
try {
|
||||
queue.setBlock(x, y, z, BukkitAdapter.adapt(type).getDefaultState());
|
||||
} catch (WorldEditException e) {
|
||||
@ -199,12 +198,12 @@ public class AsyncBlock implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(Material type, boolean applyPhysics) {
|
||||
public void setType(@NotNull Material type, boolean applyPhysics) {
|
||||
setType(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockFace getFace(Block block) {
|
||||
public BlockFace getFace(@NotNull Block block) {
|
||||
BlockFace[] directions = BlockFace.values();
|
||||
for (BlockFace face : directions) {
|
||||
if (this.getX() + face.getModX() == block.getX()
|
||||
@ -216,31 +215,28 @@ public class AsyncBlock implements Block {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncBlockState getState() {
|
||||
int combined = queue.getCombinedId4Data(x, y, z, 0);
|
||||
BlockType type = BlockTypes.getFromStateId(combined);
|
||||
switch (type.getInternalId()) {
|
||||
case BlockID.SIGN:
|
||||
case BlockID.WALL_SIGN:
|
||||
return new AsyncSign(this, combined);
|
||||
default:
|
||||
return new AsyncBlockState(this, combined);
|
||||
if (type == BlockTypes.SIGN || type == BlockTypes.WALL_SIGN) {
|
||||
return new AsyncSign(this, combined);
|
||||
}
|
||||
return new AsyncBlockState(this, combined);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public AsyncBlockState getState(boolean useSnapshot) {
|
||||
return getState();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public Biome getBiome() {
|
||||
return world.getAdapter().adapt(queue.getBiomeType(x, z));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(Biome bio) {
|
||||
public void setBiome(@NotNull Biome bio) {
|
||||
BiomeType biome = world.getAdapter().adapt(bio);
|
||||
queue.setBiome(x, z, biome);
|
||||
}
|
||||
@ -256,17 +252,17 @@ public class AsyncBlock implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBlockFacePowered(BlockFace face) {
|
||||
public boolean isBlockFacePowered(@NotNull BlockFace face) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBlockFaceIndirectlyPowered(BlockFace face) {
|
||||
public boolean isBlockFaceIndirectlyPowered(@NotNull BlockFace face) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockPower(BlockFace face) {
|
||||
public int getBlockPower(@NotNull BlockFace face) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -313,37 +309,37 @@ public class AsyncBlock implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean breakNaturally(ItemStack tool) {
|
||||
public boolean breakNaturally(@NotNull ItemStack tool) {
|
||||
return TaskManager.IMP.sync(() -> getUnsafeBlock().breakNaturally(tool));
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public Collection<ItemStack> getDrops() {
|
||||
return TaskManager.IMP.sync(() -> getUnsafeBlock().getDrops());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<ItemStack> getDrops(ItemStack tool) {
|
||||
@NotNull @Override
|
||||
public Collection<ItemStack> getDrops(@NotNull ItemStack tool) {
|
||||
return TaskManager.IMP.sync(() -> getUnsafeBlock().getDrops(tool));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMetadata(String metadataKey, MetadataValue newMetadataValue) {
|
||||
public void setMetadata(@NotNull String metadataKey, @NotNull MetadataValue newMetadataValue) {
|
||||
this.getUnsafeBlock().setMetadata(metadataKey, newMetadataValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MetadataValue> getMetadata(String metadataKey) {
|
||||
@NotNull @Override
|
||||
public List<MetadataValue> getMetadata(@NotNull String metadataKey) {
|
||||
return this.getUnsafeBlock().getMetadata(metadataKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMetadata(String metadataKey) {
|
||||
public boolean hasMetadata(@NotNull String metadataKey) {
|
||||
return this.getUnsafeBlock().hasMetadata(metadataKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMetadata(String metadataKey, Plugin owningPlugin) {
|
||||
public void removeMetadata(@NotNull String metadataKey, @NotNull Plugin owningPlugin) {
|
||||
this.getUnsafeBlock().removeMetadata(metadataKey, owningPlugin);
|
||||
}
|
||||
|
||||
@ -353,11 +349,11 @@ public class AsyncBlock implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTrace(Location arg0, Vector arg1, double arg2, FluidCollisionMode arg3) {
|
||||
public RayTraceResult rayTrace(@NotNull Location arg0, @NotNull Vector arg1, double arg2, @NotNull FluidCollisionMode arg3) {
|
||||
return this.getUnsafeBlock().rayTrace(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull @Override
|
||||
public BoundingBox getBoundingBox() {
|
||||
return this.getUnsafeBlock().getBoundingBox();
|
||||
}
|
||||
|
Reference in New Issue
Block a user