geforkt von Mirrors/Paper
SPIGOT-4230: Improve legacy block types
Dieser Commit ist enthalten in:
Ursprung
ec2095d9c6
Commit
5e3082c7d8
@ -45,7 +45,7 @@ public class CraftBlock implements Block {
|
|||||||
return getNMS().getBlock();
|
return getNMS().getBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected net.minecraft.server.IBlockData getNMS() {
|
public net.minecraft.server.IBlockData getNMS() {
|
||||||
return world.getType(position);
|
return world.getType(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,7 +228,8 @@ public class Commodore
|
|||||||
|
|
||||||
if ( EVIL.contains( owner + " " + desc + " " + name )
|
if ( EVIL.contains( owner + " " + desc + " " + name )
|
||||||
|| ( owner.startsWith( "org/bukkit/block/" ) && ( desc + " " + name ).equals( "()I getTypeId" ) )
|
|| ( owner.startsWith( "org/bukkit/block/" ) && ( desc + " " + name ).equals( "()I getTypeId" ) )
|
||||||
|| ( owner.startsWith( "org/bukkit/block/" ) && ( desc + " " + name ).equals( "(I)Z setTypeId" ) ) )
|
|| ( owner.startsWith( "org/bukkit/block/" ) && ( desc + " " + name ).equals( "(I)Z setTypeId" ) )
|
||||||
|
|| ( owner.startsWith( "org/bukkit/block/" ) && ( desc + " " + name ).equals( "()Lorg/bukkit/Material; getType" ) ) )
|
||||||
{
|
{
|
||||||
Type[] args = Type.getArgumentTypes( desc );
|
Type[] args = Type.getArgumentTypes( desc );
|
||||||
Type[] newArgs = new Type[ args.length + 1 ];
|
Type[] newArgs = new Type[ args.length + 1 ];
|
||||||
|
@ -9,6 +9,7 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||||
|
import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,6 +35,14 @@ public class CraftEvil {
|
|||||||
return getId(world.getBlockAt(location).getType());
|
return getId(world.getBlockAt(location).getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Material getType(Block block) {
|
||||||
|
return CraftLegacy.toLegacyMaterial(((CraftBlock) block).getNMS());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Material getType(BlockState block) {
|
||||||
|
return CraftLegacy.toLegacyMaterial(((CraftBlockState) block).getHandle());
|
||||||
|
}
|
||||||
|
|
||||||
public static int getTypeId(Block block) {
|
public static int getTypeId(Block block) {
|
||||||
return getId(block.getType());
|
return getId(block.getType());
|
||||||
}
|
}
|
||||||
|
@ -134,6 +134,14 @@ public class CraftLegacy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static byte toLegacyData(IBlockData blockData) {
|
public static byte toLegacyData(IBlockData blockData) {
|
||||||
|
return toLegacy(blockData).getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Material toLegacyMaterial(IBlockData blockData) {
|
||||||
|
return toLegacy(blockData).getItemType();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MaterialData toLegacy(IBlockData blockData) {
|
||||||
MaterialData mappedData;
|
MaterialData mappedData;
|
||||||
|
|
||||||
// Try exact match first
|
// Try exact match first
|
||||||
@ -143,7 +151,7 @@ public class CraftLegacy {
|
|||||||
mappedData = blockToMaterial.get(blockData.getBlock());
|
mappedData = blockToMaterial.get(blockData.getBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
return (mappedData == null) ? 0 : mappedData.getData();
|
return (mappedData == null) ? new MaterialData(Material.LEGACY_AIR) : mappedData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Material fromLegacy(Material material) {
|
public static Material fromLegacy(Material material) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren