|
4 | 4 | import com.minecolonies.api.compatibility.Compatibility; |
5 | 5 | import com.minecolonies.api.equipment.registry.EquipmentTypeEntry; |
6 | 6 | import com.minecolonies.api.items.ModItems; |
| 7 | +import com.minecolonies.api.util.Log; |
7 | 8 | import com.minecolonies.api.util.ItemStackUtils; |
8 | 9 | import com.minecolonies.api.util.constant.Constants; |
9 | 10 | import com.minecolonies.api.util.constant.translation.ToolTranslationConstants; |
@@ -224,52 +225,74 @@ public static int durabilityBasedLevel(ItemStack itemStack, int vanillaItemDurab |
224 | 225 | @SuppressWarnings("null") |
225 | 226 | public static void initRegisterEquipmentTiers() |
226 | 227 | { |
227 | | - final int bowRef = new ItemStack(Items.BOW).getMaxDamage(); |
228 | | - final int rodRef = new ItemStack(Items.FISHING_ROD).getMaxDamage(); |
229 | | - final int shearsRef = new ItemStack(Items.SHEARS).getMaxDamage(); |
230 | | - final int shieldRef = new ItemStack(Items.SHIELD).getMaxDamage(); |
231 | | - final int flintRef = new ItemStack(Items.FLINT_AND_STEEL).getMaxDamage(); |
232 | | - final int tridentRef = new ItemStack(Items.TRIDENT).getMaxDamage(); |
| 228 | + int bowRef = 0; |
| 229 | + int rodRef = 0; |
| 230 | + int shearsRef = 0; |
| 231 | + int shieldRef = 0; |
| 232 | + int flintRef = 0; |
| 233 | + int tridentRef = 0; |
| 234 | + try |
| 235 | + { |
| 236 | + bowRef = new ItemStack(Items.BOW).getMaxDamage(); |
| 237 | + rodRef = new ItemStack(Items.FISHING_ROD).getMaxDamage(); |
| 238 | + shearsRef = new ItemStack(Items.SHEARS).getMaxDamage(); |
| 239 | + shieldRef = new ItemStack(Items.SHIELD).getMaxDamage(); |
| 240 | + flintRef = new ItemStack(Items.FLINT_AND_STEEL).getMaxDamage(); |
| 241 | + tridentRef = new ItemStack(Items.TRIDENT).getMaxDamage(); |
| 242 | + } |
| 243 | + catch (Exception e) |
| 244 | + { |
| 245 | + Log.getLogger().error("Failed to fetch getMaxDamage references for equipment tier registration, durability based tiers for certain items will not be registered.", e); |
| 246 | + return; |
| 247 | + } |
233 | 248 |
|
234 | 249 | for (final Item item : BuiltInRegistries.ITEM) |
235 | 250 | { |
236 | | - final ItemStack dummy = new ItemStack(item); |
237 | | - |
238 | | - if (item instanceof final TieredItem tiered) |
| 251 | + try |
239 | 252 | { |
240 | | - Compatibility.registerItemTierIfAbsent(item, tiered.getTier(), (int) tiered.getTier().getAttackDamageBonus()); |
241 | | - } |
242 | | - else if (item instanceof ArmorItem) |
243 | | - { |
244 | | - final int level = ItemStackUtils.getArmorLevel(dummy); |
245 | | - if (level > 0) |
| 253 | + |
| 254 | + final ItemStack dummy = new ItemStack(item); |
| 255 | + |
| 256 | + if (item instanceof final TieredItem tiered) |
246 | 257 | { |
247 | | - Compatibility.registerItemTierIfAbsent(item, level); |
| 258 | + Compatibility.registerItemTierIfAbsent(item, tiered.getTier(), (int) tiered.getTier().getAttackDamageBonus()); |
| 259 | + } |
| 260 | + else if (item instanceof ArmorItem) |
| 261 | + { |
| 262 | + final int level = ItemStackUtils.getArmorLevel(dummy); |
| 263 | + if (level > 0) |
| 264 | + { |
| 265 | + Compatibility.registerItemTierIfAbsent(item, level); |
| 266 | + } |
| 267 | + } |
| 268 | + else if (item instanceof BowItem) |
| 269 | + { |
| 270 | + Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, bowRef)); |
| 271 | + } |
| 272 | + else if (canPerformDefaultActions(dummy, ToolActions.DEFAULT_FISHING_ROD_ACTIONS)) |
| 273 | + { |
| 274 | + Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, rodRef)); |
| 275 | + } |
| 276 | + else if (canPerformDefaultActions(dummy, ToolActions.DEFAULT_SHEARS_ACTIONS)) |
| 277 | + { |
| 278 | + Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, shearsRef)); |
| 279 | + } |
| 280 | + else if (canPerformDefaultActions(dummy, ToolActions.DEFAULT_SHIELD_ACTIONS)) |
| 281 | + { |
| 282 | + Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, shieldRef)); |
| 283 | + } |
| 284 | + else if (item instanceof FlintAndSteelItem) |
| 285 | + { |
| 286 | + Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, flintRef)); |
| 287 | + } |
| 288 | + else if (item instanceof TridentItem) |
| 289 | + { |
| 290 | + Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, tridentRef)); |
248 | 291 | } |
249 | 292 | } |
250 | | - else if (item instanceof BowItem) |
251 | | - { |
252 | | - Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, bowRef)); |
253 | | - } |
254 | | - else if (canPerformDefaultActions(dummy, ToolActions.DEFAULT_FISHING_ROD_ACTIONS)) |
255 | | - { |
256 | | - Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, rodRef)); |
257 | | - } |
258 | | - else if (canPerformDefaultActions(dummy, ToolActions.DEFAULT_SHEARS_ACTIONS)) |
259 | | - { |
260 | | - Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, shearsRef)); |
261 | | - } |
262 | | - else if (canPerformDefaultActions(dummy, ToolActions.DEFAULT_SHIELD_ACTIONS)) |
263 | | - { |
264 | | - Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, shieldRef)); |
265 | | - } |
266 | | - else if (item instanceof FlintAndSteelItem) |
267 | | - { |
268 | | - Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, flintRef)); |
269 | | - } |
270 | | - else if (item instanceof TridentItem) |
| 293 | + catch (Exception e) |
271 | 294 | { |
272 | | - Compatibility.registerItemTierIfAbsent(item, durabilityBasedLevel(dummy, tridentRef)); |
| 295 | + Log.getLogger().error("Failed to register equipment tiers for item: " + BuiltInRegistries.ITEM.getKey(item), e); |
273 | 296 | } |
274 | 297 | } |
275 | 298 | } |
|
0 commit comments