Skip to content

Commit 50ad201

Browse files
committed
Add platform implementations
Signed-off-by: Christopher White <[email protected]>
1 parent a0e54a9 commit 50ad201

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+866
-175
lines changed

buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ repositories {
1616
maven("https://repo.pgm.fyi/snapshots") // Sportpaper & other pgm-specific stuff
1717
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") // Spigot repo
1818
maven("https://repo.aikar.co/content/groups/aikar/") // aikar repo
19+
maven("https://jitpack.io") // Backup: jitpack
1920
}
2021

2122
dependencies {
22-
implementation("tc.oc.pgm:util:0.16-SNAPSHOT") { isTransitive = false }
2323
implementation("com.zaxxer:HikariCP:2.4.1") { isTransitive = false }
2424
implementation("fr.minuskube.inv:smart-invs:1.2.7") { isTransitive = false }
2525

@@ -29,13 +29,22 @@ dependencies {
2929
implementation("net.kyori:adventure-api:4.17.0")
3030
implementation("net.kyori:adventure-text-serializer-plain:4.17.0")
3131
implementation("net.kyori:adventure-platform-bukkit:4.3.4")
32+
implementation("org.reflections:reflections:0.10.2")
3233

33-
compileOnly("app.ashcon:sportpaper:1.8.8-R0.1-SNAPSHOT")
3434
compileOnly("tc.oc.pgm:core:0.16-SNAPSHOT")
35+
compileOnly("tc.oc.pgm:util:0.16-SNAPSHOT")
3536
compileOnly("tc.oc.occ:AFK:1.0.0-SNAPSHOT")
3637
compileOnly("tc.oc.occ:Environment:1.0.0-SNAPSHOT")
3738
compileOnly("org.incendo:cloud-annotations:2.0.0")
3839
compileOnly("org.jetbrains:annotations:22.0.0")
40+
compileOnly("com.github.dmulloy2:ProtocolLib:5.3.0")
41+
42+
// Minecraft includes these (or equivalents)
43+
compileOnly("com.mojang:authlib:6.0.54")
44+
compileOnly("it.unimi.dsi:fastutil:8.1.0")
45+
compileOnly("com.google.guava:guava:17.0")
46+
compileOnly("com.google.code.gson:gson:2.10.1")
47+
compileOnly("commons-lang:commons-lang:2.6")
3948
}
4049

4150
group = "dev.pgm.community"

core/build.gradle.kts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,25 @@ plugins {
66
id("com.gradleup.shadow")
77
}
88

9+
dependencies {
10+
compileOnly("dev.pgm.paper:paper-api:1.8_1.21.1-SNAPSHOT")
11+
12+
implementation(project(":util"))
13+
14+
runtimeOnly(project(":platform-sportpaper")) { exclude("*") }
15+
runtimeOnly(project(":platform-modern")) { exclude("*") }
16+
}
17+
918
tasks.named<ShadowJar>("shadowJar") {
1019
archiveFileName = "Community.jar"
1120
archiveClassifier.set("")
1221
destinationDirectory = rootProject.projectDir.resolve("build/libs")
1322

14-
minimize()
23+
minimize {
24+
// Exclude from minimization as they're required at runtime
25+
exclude(project(":platform-sportpaper"))
26+
exclude(project(":platform-modern"))
27+
}
1528

1629
dependencies {
1730
exclude(dependency("org.jetbrains:annotations"))

core/src/main/java/dev/pgm/community/Community.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import dev.pgm.community.feature.FeatureManager;
77
import dev.pgm.community.squads.SquadChannel;
88
import dev.pgm.community.text.TextTranslations;
9+
import dev.pgm.community.util.Platform;
910
import dev.pgm.community.utils.PGMUtils;
1011
import fr.minuskube.inv.InventoryManager;
1112
import java.util.Random;
13+
import java.util.logging.Level;
1214
import org.bukkit.Bukkit;
1315
import org.bukkit.ChatColor;
1416
import org.bukkit.event.Listener;
@@ -46,6 +48,14 @@ public void onEnable() {
4648
BukkitUtils.PLUGIN.set(this);
4749
}
4850

51+
// Sanity test PGM is running on a supported version before doing any work
52+
try {
53+
Platform.init();
54+
} catch (Throwable t) {
55+
getLogger().log(Level.SEVERE, "Failed to initialize Community platform", t);
56+
getServer().getPluginManager().disablePlugin(this);
57+
}
58+
4959
this.setupConfig();
5060
this.setupDatabase();
5161
this.setupFeatures();
@@ -90,6 +100,7 @@ private void setupTranslations() {
90100
}
91101

92102
public void registerListener(Listener listener) {
103+
Platform.MANIFEST.onEnable(this);
93104
getServer().getPluginManager().registerEvents(listener, this);
94105
}
95106

@@ -139,7 +150,7 @@ public void callEvent(CommunityEvent event) {
139150
// REMOVE WHEN NOT IN DEV
140151
public static void log(String format, Object... objects) {
141152
Bukkit.getConsoleSender()
142-
.sendMessage(ChatColor.translateAlternateColorCodes(
153+
.sendRawMessage(ChatColor.translateAlternateColorCodes(
143154
'&', String.format("&7[&4Community&7]&r " + format, objects)));
144155
}
145156
}

core/src/main/java/dev/pgm/community/mobs/MobFeature.java

Lines changed: 26 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.pgm.community.mobs;
22

3+
import static dev.pgm.community.util.EntityUtils.ENTITY_UTILS;
4+
35
import com.google.common.collect.Maps;
46
import com.google.common.collect.Sets;
57
import dev.pgm.community.Community;
@@ -11,11 +13,8 @@
1113
import java.util.UUID;
1214
import java.util.logging.Logger;
1315
import java.util.stream.Collectors;
14-
import net.minecraft.server.v1_8_R3.EntityInsentient;
1516
import org.bukkit.Bukkit;
16-
import org.bukkit.Location;
1717
import org.bukkit.configuration.Configuration;
18-
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity;
1918
import org.bukkit.entity.Creature;
2019
import org.bukkit.entity.Entity;
2120
import org.bukkit.entity.EntityType;
@@ -50,11 +49,10 @@ public MobFeature(Configuration config, Logger logger) {
5049
@Override
5150
public void enable() {
5251
super.enable();
53-
this.task =
54-
Community.get()
55-
.getServer()
56-
.getScheduler()
57-
.runTaskTimer(Community.get(), this::updateFollows, 0L, 10L);
52+
this.task = Community.get()
53+
.getServer()
54+
.getScheduler()
55+
.runTaskTimer(Community.get(), this::updateFollows, 0L, 10L);
5856
}
5957

6058
@Override
@@ -81,24 +79,19 @@ public void onDamage(EntityDamageByEntityEvent event) {
8179
}
8280

8381
public void updateFollows() {
84-
this.followTargets
85-
.entrySet()
86-
.forEach(
87-
entry -> {
88-
Player owner = Bukkit.getPlayer(entry.getKey());
89-
Player target = Bukkit.getPlayer(entry.getValue());
90-
if (owner != null && target != null) {
91-
this.getOwnedMobs(owner)
92-
.forEach(
93-
mob -> {
94-
follow(mob, target.getLocation());
95-
if (mob instanceof Creature && attackers.contains(owner.getUniqueId())) {
96-
Creature creature = (Creature) mob;
97-
creature.setTarget(target);
98-
}
99-
});
100-
}
101-
});
82+
this.followTargets.entrySet().forEach(entry -> {
83+
Player owner = Bukkit.getPlayer(entry.getKey());
84+
Player target = Bukkit.getPlayer(entry.getValue());
85+
if (owner != null && target != null) {
86+
this.getOwnedMobs(owner).forEach(mob -> {
87+
ENTITY_UTILS.follow(mob, target.getLocation(), speed);
88+
if (mob instanceof Creature && attackers.contains(owner.getUniqueId())) {
89+
Creature creature = (Creature) mob;
90+
creature.setTarget(target);
91+
}
92+
});
93+
}
94+
});
10295
}
10396

10497
public boolean isFollower(UUID playerId) {
@@ -121,11 +114,6 @@ public void setTarget(Player player, Player target) {
121114
}
122115
}
123116

124-
private void follow(LivingEntity mob, Location location) {
125-
EntityInsentient nmsMob = ((EntityInsentient) ((CraftEntity) mob).getHandle());
126-
nmsMob.getNavigation().a(location.getX(), location.getY(), location.getZ(), speed);
127-
}
128-
129117
public MobConfig getMobConfig() {
130118
return (MobConfig) getConfig();
131119
}
@@ -152,15 +140,13 @@ public void spawn(Player sender, EntityType type, boolean canDie) {
152140
public List<LivingEntity> getOwnedMobs(Player sender) {
153141
return sender.getWorld().getLivingEntities().stream()
154142
.filter(le -> le.hasMetadata("owner"))
155-
.filter(
156-
le -> {
157-
List<MetadataValue> values = le.getMetadata("owner");
158-
Optional<MetadataValue> value =
159-
values.stream()
160-
.filter(mv -> mv.getOwningPlugin().equals(Community.get()))
161-
.findAny();
162-
return value.isPresent() && value.get().asString().equalsIgnoreCase(sender.getName());
163-
})
143+
.filter(le -> {
144+
List<MetadataValue> values = le.getMetadata("owner");
145+
Optional<MetadataValue> value = values.stream()
146+
.filter(mv -> mv.getOwningPlugin().equals(Community.get()))
147+
.findAny();
148+
return value.isPresent() && value.get().asString().equalsIgnoreCase(sender.getName());
149+
})
164150
.collect(Collectors.toList());
165151
}
166152

core/src/main/java/dev/pgm/community/mutations/types/items/BreadMutation.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package dev.pgm.community.mutations.types.items;
22

3+
import static dev.pgm.community.util.InventoryUtils.INVENTORY_UTILS;
4+
35
import com.google.common.collect.ImmutableMap;
46
import com.google.common.collect.Lists;
57
import com.google.common.collect.Maps;
68
import dev.pgm.community.Community;
79
import dev.pgm.community.mutations.Mutation;
810
import dev.pgm.community.mutations.MutationType;
911
import dev.pgm.community.mutations.types.KitMutationBase;
12+
import dev.pgm.community.utils.compatibility.Enchantments;
1013
import dev.pgm.community.utils.compatibility.PotionEffects;
1114
import java.util.HashMap;
1215
import java.util.HashSet;
@@ -103,7 +106,8 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
103106
ItemStack ironBread = preventSharing(
104107
new ItemBuilder(new ItemStack(Material.BREAD)).name("Iron Bread").build());
105108
ItemMeta ironBreadMeta = ironBread.getItemMeta();
106-
ironBreadMeta.addAttributeModifier(
109+
INVENTORY_UTILS.addAttributeModifier(
110+
ironBreadMeta,
107111
Attribute.GENERIC_KNOCKBACK_RESISTANCE,
108112
new AttributeModifier(
109113
Attribute.GENERIC_KNOCKBACK_RESISTANCE.name(),
@@ -114,7 +118,8 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
114118
ItemStack fastBread = preventSharing(
115119
new ItemBuilder(new ItemStack(Material.BREAD)).name("Fast Bread").build());
116120
ItemMeta speedBreadMeta = fastBread.getItemMeta();
117-
speedBreadMeta.addAttributeModifier(
121+
INVENTORY_UTILS.addAttributeModifier(
122+
speedBreadMeta,
118123
Attribute.GENERIC_MOVEMENT_SPEED,
119124
new AttributeModifier(
120125
Attribute.GENERIC_MOVEMENT_SPEED.name(), 0.3, AttributeModifier.Operation.ADD_SCALAR));
@@ -123,7 +128,8 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
123128
ItemStack veryFastBread = preventSharing(
124129
new ItemBuilder(new ItemStack(Material.BREAD)).name("Very Fast Bread").build());
125130
ItemMeta veryFastBreadMeta = veryFastBread.getItemMeta();
126-
veryFastBreadMeta.addAttributeModifier(
131+
INVENTORY_UTILS.addAttributeModifier(
132+
veryFastBreadMeta,
127133
Attribute.GENERIC_MOVEMENT_SPEED,
128134
new AttributeModifier(
129135
Attribute.GENERIC_MOVEMENT_SPEED.name(), 1, AttributeModifier.Operation.ADD_SCALAR));
@@ -138,7 +144,7 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
138144
20.0)
139145
.put(
140146
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
141-
.enchant(Enchantment.DAMAGE_ALL, 5)
147+
.enchant(Enchantments.SHARPNESS, 5)
142148
.name("Sharp Bread")
143149
.build()),
144150
20.0)
@@ -156,7 +162,7 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
156162
.put(veryFastBread, 3.0)
157163
.put(
158164
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
159-
.enchant(Enchantment.DAMAGE_ALL, 10)
165+
.enchant(Enchantments.SHARPNESS, 10)
160166
.name("Very Sharp Bread")
161167
.build()),
162168
3.0)
@@ -174,7 +180,7 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
174180
1.0)
175181
.put(
176182
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
177-
.enchant(Enchantment.DAMAGE_ALL, 20)
183+
.enchant(Enchantments.SHARPNESS, 20)
178184
.name("Insanely Sharp Bread")
179185
.build()),
180186
1.0)
@@ -203,7 +209,7 @@ static ImmutableMap<ItemStack, Double> getBadBreadsMap() {
203209
20.0)
204210
.put(
205211
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
206-
.enchant(Enchantment.DAMAGE_ALL, 5)
212+
.enchant(Enchantments.SHARPNESS, 5)
207213
.name("Sharp Bread")
208214
.build()),
209215
20.0)

core/src/main/java/dev/pgm/community/mutations/types/items/ExplosionMutation.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.pgm.community.mutations.types.items;
22

3+
import static dev.pgm.community.util.Effects.EFFECTS;
34
import static tc.oc.pgm.util.bukkit.BukkitUtils.colorize;
45

56
import com.google.common.collect.Lists;
@@ -21,7 +22,6 @@
2122
import java.util.UUID;
2223
import java.util.stream.Collectors;
2324
import org.bukkit.Bukkit;
24-
import org.bukkit.Effect;
2525
import org.bukkit.Location;
2626
import org.bukkit.Material;
2727
import org.bukkit.World;
@@ -217,8 +217,7 @@ private void explode(Block block) {
217217

218218
world.createExplosion(loc, 3.3f);
219219

220-
for (int i = 0; i < 5; i++)
221-
world.spigot().playEffect(loc, Effect.LAVA_POP, 0, 0, 0, 0, 0, 0, 15, 50);
220+
for (int i = 0; i < 5; i++) EFFECTS.explosionEffect(loc);
222221
}
223222

224223
private static Kit getRandomKit() {

0 commit comments

Comments
 (0)