blob: 54e2f5d617f41646faddba6285cf46dc6f5d43bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
package org.bukkit.craftbukkit.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.server.Block;
import net.minecraft.server.Blocks;
import net.minecraft.server.Item;
import net.minecraft.server.MojangsonParser;
import net.minecraft.server.NBTTagCompound;
import net.minecraft.server.StatisticList;
import org.bukkit.Achievement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.UnsafeValues;
import org.bukkit.craftbukkit.CraftStatistic;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.StringUtil;
@SuppressWarnings("deprecation")
public final class CraftMagicNumbers implements UnsafeValues {
public static final UnsafeValues INSTANCE = new CraftMagicNumbers();
private CraftMagicNumbers() {}
public static Block getBlock(org.bukkit.block.Block block) {
return getBlock(block.getType());
}
@Deprecated
// A bad method for bad magic.
public static Block getBlock(int id) {
return getBlock(Material.getMaterial(id));
}
@Deprecated
// A bad method for bad magic.
public static int getId(Block block) {
return Block.b(block);
}
public static Material getMaterial(Block block) {
return Material.getMaterial(Block.b(block));
}
public static Item getItem(Material material) {
// TODO: Don't use ID
Item item = Item.d(material.getId());
return item;
}
@Deprecated
// A bad method for bad magic.
public static Item getItem(int id) {
return Item.d(id);
}
@Deprecated
// A bad method for bad magic.
public static int getId(Item item) {
return Item.b(item);
}
public static Material getMaterial(Item item) {
// TODO: Don't use ID
Material material = Material.getMaterial(Item.b(item));
if (material == null) {
return Material.AIR;
}
return material;
}
public static Block getBlock(Material material) {
// TODO: Don't use ID
Block block = Block.e(material.getId());
if (block == null) {
return Blocks.AIR;
}
return block;
}
@Override
public Material getMaterialFromInternalName(String name) {
return getMaterial((Item) Item.REGISTRY.a(name));
}
@Override
public List<String> tabCompleteInternalMaterialName(String token, List<String> completions) {
return StringUtil.copyPartialMatches(token, Item.REGISTRY.keySet(), completions);
}
@Override
public ItemStack modifyItemStack(ItemStack stack, String arguments) {
net.minecraft.server.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack);
nmsStack.setTag((NBTTagCompound) MojangsonParser.parse(arguments));
stack.setItemMeta(CraftItemStack.getItemMeta(nmsStack));
return stack;
}
@Override
public Statistic getStatisticFromInternalName(String name) {
return CraftStatistic.getBukkitStatisticByName(name);
}
@Override
public Achievement getAchievementFromInternalName(String name) {
return CraftStatistic.getBukkitAchievementByName(name);
}
@Override
public List<String> tabCompleteInternalStatisticOrAchievementName(String token, List<String> completions) {
List<String> matches = new ArrayList<String>();
Iterator iterator = StatisticList.b.iterator();
while (iterator.hasNext()) {
String statistic = ((net.minecraft.server.Statistic) iterator.next()).name;
if (statistic.startsWith(token)) {
matches.add(statistic);
}
}
return matches;
}
}
|