Skip to content

Commit 72590b4

Browse files
committed
XTag fix INVENTORY_NOT_DISPLAYABLE & Add SPAWN_EGGS,MATERIAL_TO_ENTITY
1 parent f6fa678 commit 72590b4

File tree

1 file changed

+70
-11
lines changed
  • core/src/main/java/com/cryptomorin/xseries

1 file changed

+70
-11
lines changed

core/src/main/java/com/cryptomorin/xseries/XTag.java

Lines changed: 70 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import com.cryptomorin.xseries.base.XBase;
2525
import org.bukkit.Material;
26+
import org.bukkit.event.entity.EntitySpawnEvent;
2627
import org.bukkit.inventory.ItemStack;
2728
import org.jetbrains.annotations.NotNull;
2829
import org.jetbrains.annotations.Nullable;
@@ -79,11 +80,16 @@ public final class XTag<T extends XBase<?, ?>> {
7980
*/
8081
@NotNull
8182
public static final XTag<XMaterial> ALIVE_CORAL_PLANTS;
82-
/**
83-
*
84-
*/
8583
@NotNull
8684
public static final XTag<XMaterial> ALIVE_CORAL_WALL_FANS;
85+
86+
@NotNull
87+
public static final XTag<XMaterial> SPAWN_EGGS = TagBuilder.of(
88+
Arrays.stream(XMaterial.values())
89+
.filter(x -> x.name().endsWith("_SPAWN_EGG"))
90+
.toArray(XMaterial[]::new)
91+
).build();
92+
8793
/**
8894
* Tag representing all possible blocks available for animals to spawn on
8995
*/
@@ -1107,6 +1113,17 @@ public final class XTag<T extends XBase<?, ?>> {
11071113
XPotion.WEAKNESS, XPotion.WITHER
11081114
);
11091115

1116+
/**
1117+
* What entity spawns when a material is placed down?
1118+
* Mostly for things that spawn instantly after a single
1119+
* right-click whether it requires a block or free air.
1120+
* <p>
1121+
* It doesn't work for bows and arrows, TNT, fishing bobs
1122+
* or EXP bottles.
1123+
*/
1124+
@SuppressWarnings("MapReplaceableByEnumMap")
1125+
public static final Map<XMaterial, XEntityType> MATERIAL_TO_ENTITY = new HashMap<>();
1126+
11101127
static { // logs
11111128
ACACIA_LOGS = TagBuilder.simple(
11121129
XMaterial.STRIPPED_ACACIA_LOG,
@@ -2468,22 +2485,64 @@ public final class XTag<T extends XBase<?, ?>> {
24682485
static {
24692486
INVENTORY_NOT_DISPLAYABLE = TagBuilder
24702487
.of(
2471-
XMaterial.BIG_DRIPLEAF_STEM, XMaterial.SWEET_BERRY_BUSH, XMaterial.KELP_PLANT,
2472-
XMaterial.FROSTED_ICE, XMaterial.ATTACHED_MELON_STEM, XMaterial.ATTACHED_PUMPKIN_STEM,
2473-
XMaterial.COCOA, XMaterial.MOVING_PISTON, XMaterial.PISTON_HEAD, XMaterial.PITCHER_CROP,
2474-
XMaterial.POWDER_SNOW, XMaterial.REDSTONE_WIRE, XMaterial.TALL_SEAGRASS, XMaterial.TRIPWIRE,
2475-
XMaterial.TORCHFLOWER_CROP, XMaterial.BUBBLE_COLUMN, XMaterial.TWISTING_VINES_PLANT,
2476-
XMaterial.WEEPING_VINES_PLANT, XMaterial.BAMBOO_SAPLING
2488+
XMaterial.FROSTED_ICE,
2489+
XMaterial.MOVING_PISTON, XMaterial.PISTON_HEAD, XMaterial.BUBBLE_COLUMN,
2490+
XMaterial.POWDER_SNOW, XMaterial.REDSTONE_WIRE, XMaterial.TRIPWIRE,
2491+
2492+
// Saplings, stems and crops
2493+
XMaterial.BIG_DRIPLEAF_STEM, XMaterial.SWEET_BERRY_BUSH,
2494+
XMaterial.TORCHFLOWER_CROP, XMaterial.TWISTING_VINES_PLANT,
2495+
XMaterial.WEEPING_VINES_PLANT, XMaterial.BAMBOO_SAPLING,
2496+
XMaterial.CARROT, XMaterial.CARROTS, XMaterial.POTATO, XMaterial.POTATOES,
2497+
XMaterial.BAMBOO_SAPLING, XMaterial.BAMBOO, XMaterial.CHORUS_PLANT,
2498+
XMaterial.KELP_PLANT, XMaterial.COCOA, XMaterial.TALL_SEAGRASS,
2499+
XMaterial.MELON_STEM, XMaterial.PUMPKIN_STEM,
2500+
XMaterial.ATTACHED_MELON_STEM, XMaterial.ATTACHED_PUMPKIN_STEM
24772501
)
24782502
.inheritFrom(
24792503
AIR, CAVE_VINES, FILLED_CAULDRONS, FIRE, FLUID, PORTALS,
24802504
WALL_SIGNS, WALL_HANGING_SIGNS, WALL_TORCHES, ALIVE_CORAL_WALL_FANS,
24812505
DEAD_CORAL_WALL_FANS, WALL_HEADS, CANDLE_CAKES, WALL_BANNERS,
2482-
FLOWER_POTS.without(XMaterial.FLOWER_POT),
2483-
CROPS.without(XMaterial.WHEAT_SEEDS, XMaterial.WHEAT)
2506+
FLOWER_POTS.without(XMaterial.FLOWER_POT)
24842507
).build();
24852508
}
24862509

2510+
static {
2511+
// Minecarts
2512+
MATERIAL_TO_ENTITY.put(XMaterial.MINECART, XEntityType.MINECART);
2513+
MATERIAL_TO_ENTITY.put(XMaterial.CHEST_MINECART, XEntityType.CHEST_MINECART);
2514+
MATERIAL_TO_ENTITY.put(XMaterial.COMMAND_BLOCK_MINECART, XEntityType.COMMAND_BLOCK_MINECART);
2515+
MATERIAL_TO_ENTITY.put(XMaterial.TNT_MINECART, XEntityType.TNT_MINECART);
2516+
MATERIAL_TO_ENTITY.put(XMaterial.FURNACE_MINECART, XEntityType.FURNACE_MINECART);
2517+
MATERIAL_TO_ENTITY.put(XMaterial.HOPPER_MINECART, XEntityType.HOPPER_MINECART);
2518+
2519+
// MATERIAL_TO_ENTITY.put(XMaterial.TNT, XEntityType.TNT);
2520+
// MATERIAL_TO_ENTITY.put(XMaterial.TRIDENT, XEntityType.TRIDENT);
2521+
MATERIAL_TO_ENTITY.put(XMaterial.END_CRYSTAL, XEntityType.END_CRYSTAL);
2522+
MATERIAL_TO_ENTITY.put(XMaterial.PAINTING, XEntityType.PAINTING);
2523+
MATERIAL_TO_ENTITY.put(XMaterial.ITEM_FRAME, XEntityType.ITEM_FRAME);
2524+
MATERIAL_TO_ENTITY.put(XMaterial.GLOW_ITEM_FRAME, XEntityType.GLOW_ITEM_FRAME);
2525+
MATERIAL_TO_ENTITY.put(XMaterial.WIND_CHARGE, XEntityType.WIND_CHARGE);
2526+
MATERIAL_TO_ENTITY.put(XMaterial.EGG, XEntityType.EGG);
2527+
MATERIAL_TO_ENTITY.put(XMaterial.SNOWBALL, XEntityType.SNOWBALL);
2528+
MATERIAL_TO_ENTITY.put(XMaterial.ENDER_PEARL, XEntityType.ENDER_PEARL);
2529+
MATERIAL_TO_ENTITY.put(XMaterial.ENDER_EYE, XEntityType.EYE_OF_ENDER);
2530+
2531+
// Boats
2532+
for (XMaterial boat : ITEMS_BOATS.values) {
2533+
XEntityType entityType = XEntityType.of(boat.name())
2534+
.orElseThrow(() -> new IllegalStateException("Cannot find entity type for boat: " + boat));
2535+
MATERIAL_TO_ENTITY.put(boat, entityType);
2536+
}
2537+
2538+
// Spawn Eggs
2539+
for (XMaterial spawnEgg : SPAWN_EGGS.values) {
2540+
XEntityType entityType = XEntityType.of(spawnEgg.name())
2541+
.orElseThrow(() -> new IllegalStateException("Cannot find entity type for spawn egg: " + spawnEgg));
2542+
MATERIAL_TO_ENTITY.put(spawnEgg, entityType);
2543+
}
2544+
}
2545+
24872546
@NotNull
24882547
private final Set<T> values;
24892548

0 commit comments

Comments
 (0)