Skip to content

Platform support #94

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ repositories {
maven("https://repo.pgm.fyi/snapshots") // Sportpaper & other pgm-specific stuff
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") // Spigot repo
maven("https://repo.aikar.co/content/groups/aikar/") // aikar repo
maven("https://jitpack.io") // Backup: jitpack
}

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

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

compileOnly("app.ashcon:sportpaper:1.8.8-R0.1-SNAPSHOT")
compileOnly("tc.oc.pgm:core:0.16-SNAPSHOT")
compileOnly("tc.oc.pgm:util:0.16-SNAPSHOT")
compileOnly("tc.oc.occ:AFK:1.0.0-SNAPSHOT")
compileOnly("tc.oc.occ:Environment:1.0.0-SNAPSHOT")
compileOnly("org.incendo:cloud-annotations:2.0.0")
compileOnly("org.jetbrains:annotations:22.0.0")
compileOnly("com.github.dmulloy2:ProtocolLib:5.3.0")

// Minecraft includes these (or equivalents)
compileOnly("com.mojang:authlib:6.0.54")
compileOnly("it.unimi.dsi:fastutil:8.1.0")
compileOnly("com.google.guava:guava:17.0")
compileOnly("com.google.code.gson:gson:2.10.1")
compileOnly("commons-lang:commons-lang:2.6")
}

group = "dev.pgm.community"
Expand Down
15 changes: 14 additions & 1 deletion core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,25 @@ plugins {
id("com.gradleup.shadow")
}

dependencies {
compileOnly("dev.pgm.paper:paper-api:1.8_1.21.1-SNAPSHOT")

implementation(project(":util"))

runtimeOnly(project(":platform-sportpaper")) { exclude("*") }
runtimeOnly(project(":platform-modern")) { exclude("*") }
}

tasks.named<ShadowJar>("shadowJar") {
archiveFileName = "Community.jar"
archiveClassifier.set("")
destinationDirectory = rootProject.projectDir.resolve("build/libs")

minimize()
minimize {
// Exclude from minimization as they're required at runtime
exclude(project(":platform-sportpaper"))
exclude(project(":platform-modern"))
}

dependencies {
exclude(dependency("org.jetbrains:annotations"))
Expand Down
13 changes: 12 additions & 1 deletion core/src/main/java/dev/pgm/community/Community.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import dev.pgm.community.feature.FeatureManager;
import dev.pgm.community.squads.SquadChannel;
import dev.pgm.community.text.TextTranslations;
import dev.pgm.community.util.Platform;
import dev.pgm.community.utils.PGMUtils;
import fr.minuskube.inv.InventoryManager;
import java.util.Random;
import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.Listener;
Expand Down Expand Up @@ -46,6 +48,14 @@ public void onEnable() {
BukkitUtils.PLUGIN.set(this);
}

// Sanity test PGM is running on a supported version before doing any work
try {
Platform.init();
} catch (Throwable t) {
getLogger().log(Level.SEVERE, "Failed to initialize Community platform", t);
getServer().getPluginManager().disablePlugin(this);
}

this.setupConfig();
this.setupDatabase();
this.setupFeatures();
Expand Down Expand Up @@ -90,6 +100,7 @@ private void setupTranslations() {
}

public void registerListener(Listener listener) {
Platform.MANIFEST.onEnable(this);
getServer().getPluginManager().registerEvents(listener, this);
}

Expand Down Expand Up @@ -139,7 +150,7 @@ public void callEvent(CommunityEvent event) {
// REMOVE WHEN NOT IN DEV
public static void log(String format, Object... objects) {
Bukkit.getConsoleSender()
.sendMessage(ChatColor.translateAlternateColorCodes(
.sendRawMessage(ChatColor.translateAlternateColorCodes(
'&', String.format("&7[&4Community&7]&r " + format, objects)));
}
}
66 changes: 26 additions & 40 deletions core/src/main/java/dev/pgm/community/mobs/MobFeature.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dev.pgm.community.mobs;

import static dev.pgm.community.util.EntityUtils.ENTITY_UTILS;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import dev.pgm.community.Community;
Expand All @@ -11,11 +13,8 @@
import java.util.UUID;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import net.minecraft.server.v1_8_R3.EntityInsentient;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.Configuration;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
Expand Down Expand Up @@ -50,11 +49,10 @@ public MobFeature(Configuration config, Logger logger) {
@Override
public void enable() {
super.enable();
this.task =
Community.get()
.getServer()
.getScheduler()
.runTaskTimer(Community.get(), this::updateFollows, 0L, 10L);
this.task = Community.get()
.getServer()
.getScheduler()
.runTaskTimer(Community.get(), this::updateFollows, 0L, 10L);
}

@Override
Expand All @@ -81,24 +79,19 @@ public void onDamage(EntityDamageByEntityEvent event) {
}

public void updateFollows() {
this.followTargets
.entrySet()
.forEach(
entry -> {
Player owner = Bukkit.getPlayer(entry.getKey());
Player target = Bukkit.getPlayer(entry.getValue());
if (owner != null && target != null) {
this.getOwnedMobs(owner)
.forEach(
mob -> {
follow(mob, target.getLocation());
if (mob instanceof Creature && attackers.contains(owner.getUniqueId())) {
Creature creature = (Creature) mob;
creature.setTarget(target);
}
});
}
});
this.followTargets.entrySet().forEach(entry -> {
Player owner = Bukkit.getPlayer(entry.getKey());
Player target = Bukkit.getPlayer(entry.getValue());
if (owner != null && target != null) {
this.getOwnedMobs(owner).forEach(mob -> {
ENTITY_UTILS.follow(mob, target.getLocation(), speed);
if (mob instanceof Creature && attackers.contains(owner.getUniqueId())) {
Creature creature = (Creature) mob;
creature.setTarget(target);
}
});
}
});
}

public boolean isFollower(UUID playerId) {
Expand All @@ -121,11 +114,6 @@ public void setTarget(Player player, Player target) {
}
}

private void follow(LivingEntity mob, Location location) {
EntityInsentient nmsMob = ((EntityInsentient) ((CraftEntity) mob).getHandle());
nmsMob.getNavigation().a(location.getX(), location.getY(), location.getZ(), speed);
}

public MobConfig getMobConfig() {
return (MobConfig) getConfig();
}
Expand All @@ -152,15 +140,13 @@ public void spawn(Player sender, EntityType type, boolean canDie) {
public List<LivingEntity> getOwnedMobs(Player sender) {
return sender.getWorld().getLivingEntities().stream()
.filter(le -> le.hasMetadata("owner"))
.filter(
le -> {
List<MetadataValue> values = le.getMetadata("owner");
Optional<MetadataValue> value =
values.stream()
.filter(mv -> mv.getOwningPlugin().equals(Community.get()))
.findAny();
return value.isPresent() && value.get().asString().equalsIgnoreCase(sender.getName());
})
.filter(le -> {
List<MetadataValue> values = le.getMetadata("owner");
Optional<MetadataValue> value = values.stream()
.filter(mv -> mv.getOwningPlugin().equals(Community.get()))
.findAny();
return value.isPresent() && value.get().asString().equalsIgnoreCase(sender.getName());
})
.collect(Collectors.toList());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package dev.pgm.community.mutations.types.items;

import static dev.pgm.community.util.InventoryUtils.INVENTORY_UTILS;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import dev.pgm.community.Community;
import dev.pgm.community.mutations.Mutation;
import dev.pgm.community.mutations.MutationType;
import dev.pgm.community.mutations.types.KitMutationBase;
import dev.pgm.community.utils.compatibility.Enchantments;
import dev.pgm.community.utils.compatibility.PotionEffects;
import java.util.HashMap;
import java.util.HashSet;
Expand Down Expand Up @@ -103,7 +106,8 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
ItemStack ironBread = preventSharing(
new ItemBuilder(new ItemStack(Material.BREAD)).name("Iron Bread").build());
ItemMeta ironBreadMeta = ironBread.getItemMeta();
ironBreadMeta.addAttributeModifier(
INVENTORY_UTILS.addAttributeModifier(
ironBreadMeta,
Attribute.GENERIC_KNOCKBACK_RESISTANCE,
new AttributeModifier(
Attribute.GENERIC_KNOCKBACK_RESISTANCE.name(),
Expand All @@ -114,7 +118,8 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
ItemStack fastBread = preventSharing(
new ItemBuilder(new ItemStack(Material.BREAD)).name("Fast Bread").build());
ItemMeta speedBreadMeta = fastBread.getItemMeta();
speedBreadMeta.addAttributeModifier(
INVENTORY_UTILS.addAttributeModifier(
speedBreadMeta,
Attribute.GENERIC_MOVEMENT_SPEED,
new AttributeModifier(
Attribute.GENERIC_MOVEMENT_SPEED.name(), 0.3, AttributeModifier.Operation.ADD_SCALAR));
Expand All @@ -123,7 +128,8 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
ItemStack veryFastBread = preventSharing(
new ItemBuilder(new ItemStack(Material.BREAD)).name("Very Fast Bread").build());
ItemMeta veryFastBreadMeta = veryFastBread.getItemMeta();
veryFastBreadMeta.addAttributeModifier(
INVENTORY_UTILS.addAttributeModifier(
veryFastBreadMeta,
Attribute.GENERIC_MOVEMENT_SPEED,
new AttributeModifier(
Attribute.GENERIC_MOVEMENT_SPEED.name(), 1, AttributeModifier.Operation.ADD_SCALAR));
Expand All @@ -138,7 +144,7 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
20.0)
.put(
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
.enchant(Enchantment.DAMAGE_ALL, 5)
.enchant(Enchantments.SHARPNESS, 5)
.name("Sharp Bread")
.build()),
20.0)
Expand All @@ -156,7 +162,7 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
.put(veryFastBread, 3.0)
.put(
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
.enchant(Enchantment.DAMAGE_ALL, 10)
.enchant(Enchantments.SHARPNESS, 10)
.name("Very Sharp Bread")
.build()),
3.0)
Expand All @@ -174,7 +180,7 @@ static ImmutableMap<ItemStack, Double> getBreadsMap() {
1.0)
.put(
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
.enchant(Enchantment.DAMAGE_ALL, 20)
.enchant(Enchantments.SHARPNESS, 20)
.name("Insanely Sharp Bread")
.build()),
1.0)
Expand Down Expand Up @@ -203,7 +209,7 @@ static ImmutableMap<ItemStack, Double> getBadBreadsMap() {
20.0)
.put(
preventSharing(new ItemBuilder(new ItemStack(Material.BREAD))
.enchant(Enchantment.DAMAGE_ALL, 5)
.enchant(Enchantments.SHARPNESS, 5)
.name("Sharp Bread")
.build()),
20.0)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.pgm.community.mutations.types.items;

import static dev.pgm.community.util.Effects.EFFECTS;
import static tc.oc.pgm.util.bukkit.BukkitUtils.colorize;

import com.google.common.collect.Lists;
Expand All @@ -21,7 +22,6 @@
import java.util.UUID;
import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
Expand Down Expand Up @@ -217,8 +217,7 @@ private void explode(Block block) {

world.createExplosion(loc, 3.3f);

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

private static Kit getRandomKit() {
Expand Down
Loading
Loading