-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Expand file tree
/
Copy pathGrowthContext.java
More file actions
100 lines (89 loc) · 4.14 KB
/
GrowthContext.java
File metadata and controls
100 lines (89 loc) · 4.14 KB
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
package io.papermc.paper.util.capture;
import net.minecraft.Optionull;
import net.minecraft.core.Holder;
import net.minecraft.data.worldgen.features.TreeFeatures;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import org.bukkit.TreeType;
import org.jspecify.annotations.Nullable;
public final class GrowthContext {
public static GrowthContext empty() {
return new GrowthContext(null, false);
}
public static GrowthContext usingBoneMeal(@Nullable Player user) {
return new GrowthContext(user, true);
}
private final @Nullable Player player;
private final boolean usedBoneMeal;
public boolean cancelled = false;
public Holder<ConfiguredFeature<?, ?>> feature; // just make this a field
private GrowthContext(@Nullable Player player, boolean usedBoneMeal) {
this.player = player;
this.usedBoneMeal = usedBoneMeal;
}
public org.bukkit.entity.@Nullable Player getBukkitPlayer() {
return (org.bukkit.entity.Player) Optionull.map(this.player, Entity::getBukkitEntity);
}
public boolean usedBoneMeal() {
return this.usedBoneMeal;
}
public TreeType getTreeSpecies() {
return getTreeSpecies(this.feature);
}
private static TreeType getTreeSpecies(Holder<ConfiguredFeature<?, ?>> feature) {
if (feature.is(TreeFeatures.HUGE_RED_MUSHROOM)) {
return TreeType.RED_MUSHROOM;
} else if (feature.is(TreeFeatures.HUGE_BROWN_MUSHROOM)) {
return TreeType.BROWN_MUSHROOM;
} else if (feature.is(TreeFeatures.WARPED_FUNGUS_PLANTED)) {
return TreeType.WARPED_FUNGUS;
} else if (feature.is(TreeFeatures.CRIMSON_FUNGUS_PLANTED)) {
return TreeType.CRIMSON_FUNGUS;
} else if (feature.is(TreeFeatures.OAK) || feature.is(TreeFeatures.OAK_BEES_005)) {
return TreeType.TREE;
} else if (feature.is(TreeFeatures.JUNGLE_TREE)) {
return TreeType.COCOA_TREE;
} else if (feature.is(TreeFeatures.JUNGLE_TREE_NO_VINE)) {
return TreeType.SMALL_JUNGLE;
} else if (feature.is(TreeFeatures.PINE)) {
return TreeType.TALL_REDWOOD;
} else if (feature.is(TreeFeatures.SPRUCE)) {
return TreeType.REDWOOD;
} else if (feature.is(TreeFeatures.ACACIA)) {
return TreeType.ACACIA;
} else if (feature.is(TreeFeatures.BIRCH) || feature.is(TreeFeatures.BIRCH_BEES_005)) {
return TreeType.BIRCH;
} else if (feature.is(TreeFeatures.SUPER_BIRCH_BEES_0002)) {
return TreeType.TALL_BIRCH;
} else if (feature.is(TreeFeatures.SWAMP_OAK)) {
return TreeType.SWAMP;
} else if (feature.is(TreeFeatures.FANCY_OAK) || feature.is(TreeFeatures.FANCY_OAK_BEES_005)) {
return TreeType.BIG_TREE;
} else if (feature.is(TreeFeatures.JUNGLE_BUSH)) {
return TreeType.JUNGLE_BUSH;
} else if (feature.is(TreeFeatures.DARK_OAK)) {
return TreeType.DARK_OAK;
} else if (feature.is(TreeFeatures.MEGA_SPRUCE)) {
return TreeType.MEGA_REDWOOD;
} else if (feature.is(TreeFeatures.MEGA_PINE)) {
return TreeType.MEGA_PINE;
} else if (feature.is(TreeFeatures.MEGA_JUNGLE_TREE)) {
return TreeType.JUNGLE;
} else if (feature.is(TreeFeatures.AZALEA_TREE)) {
return TreeType.AZALEA;
} else if (feature.is(TreeFeatures.MANGROVE)) {
return TreeType.MANGROVE;
} else if (feature.is(TreeFeatures.TALL_MANGROVE)) {
return TreeType.TALL_MANGROVE;
} else if (feature.is(TreeFeatures.CHERRY) || feature.is(TreeFeatures.CHERRY_BEES_005)) {
return TreeType.CHERRY;
} else if (feature.is(TreeFeatures.PALE_OAK) || feature.is(TreeFeatures.PALE_OAK_BONEMEAL)) {
return TreeType.PALE_OAK;
} else if (feature.is(TreeFeatures.PALE_OAK_CREAKING)) {
return TreeType.PALE_OAK_CREAKING;
} else {
throw new IllegalArgumentException("Unknown tree feature: " + feature);
}
}
}