Skip to content

Commit

Permalink
Merge pull request #22 from arcadelabs/feature/spirits
Browse files Browse the repository at this point in the history
Feature/spirits
  • Loading branch information
RealRONiN authored Jul 27, 2022
2 parents bbbcc90 + e258c27 commit 86df07e
Show file tree
Hide file tree
Showing 17 changed files with 411 additions and 116 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Lifesteal is a survival gamemode concept made by some MCYT content creators, whe
Original LifeSteal SMP : https://twitter.com/TheLifeStealSMP

## Features,
![Progress](https://progress-bar.dev/50/?title=done&width=220&color=f72585&suffix=%%20almost%20there...)
![Progress](https://progress-bar.dev/55/?title=done&width=220&color=f72585&suffix=%%20almost%20there...)
- [x] HEX support! gradients etc, it all works! use [Web UI](https://webui.adventure.kyori.net) to edit the messages, and yes, this is the most important feature, I don't care your players spent diamonds and wither stars to craft an heart that doesn't work as long as it shows the errors in gradients.
- [x] Customizable heart recipe.
- [x] Blessed, normal and cursed heart types.
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>in.arcadelabs</groupId>
<artifactId>LifeSteal</artifactId>
<version>1.3</version>
<version>1.5</version>
<packaging>jar</packaging>

<name>LifeSteal</name>
Expand Down Expand Up @@ -36,9 +36,9 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>C:\Users\anike\OneDrive\Desktop\TGN SV\plugins</outputDirectory>
</configuration>
<!-- <configuration>-->
<!-- <outputDirectory>C:\Users\anike\OneDrive\Desktop\TGN SV\plugins</outputDirectory>-->
<!-- </configuration>-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
14 changes: 10 additions & 4 deletions src/main/java/in/arcadelabs/lifesteal/LifeSteal.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import in.arcadelabs.lifesteal.commands.Eliminate;
import in.arcadelabs.lifesteal.commands.GiveHearts;
import in.arcadelabs.lifesteal.commands.Reload;
import in.arcadelabs.lifesteal.commands.Revive;
import in.arcadelabs.lifesteal.commands.SetHearts;
import in.arcadelabs.lifesteal.commands.Withdraw;
import in.arcadelabs.lifesteal.database.DatabaseHandler;
Expand All @@ -46,12 +47,13 @@
import in.arcadelabs.lifesteal.listeners.HeartCraftListener;
import in.arcadelabs.lifesteal.listeners.PlayerClickListener;
import in.arcadelabs.lifesteal.listeners.PlayerJoinListener;
import in.arcadelabs.lifesteal.listeners.PlayerKillListener;
import in.arcadelabs.lifesteal.listeners.PlayerDeathListener;
import in.arcadelabs.lifesteal.listeners.PlayerPotionEffectListener;
import in.arcadelabs.lifesteal.listeners.PlayerResurrectListener;
import in.arcadelabs.lifesteal.utils.I18n;
import in.arcadelabs.lifesteal.utils.Interaction;
import in.arcadelabs.lifesteal.utils.LSUtils;
import in.arcadelabs.lifesteal.utils.SpiritFactory;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.Material;
Expand Down Expand Up @@ -87,6 +89,7 @@ public class LifeSteal {
private ItemStack placeholderHeart;
private Interaction interaction;
private SkullMaker skullMaker;
private SpiritFactory spiritFactory;

/**
* Check if server ruunning on Paper or it's forks.
Expand Down Expand Up @@ -191,11 +194,12 @@ private void updateCheckerInit() {

private void registerCommands() {
final BaseCommand[] commands = {
new Eliminate(),
new GiveHearts(),
new Reload(),
new Eliminate(),
new SetHearts(),
new Withdraw(),
new Reload(),
new Revive(),
};
if (isOnPaper()) {
final PaperCommandManager pcm = new PaperCommandManager(instance);
Expand All @@ -215,7 +219,7 @@ private void registerListeners() {
new HeartConsumeListener(),
new PlayerClickListener(),
new PlayerJoinListener(),
new PlayerKillListener(),
new PlayerDeathListener(),
new HeartCraftListener(),
new ProfileListener(),
};
Expand All @@ -241,6 +245,8 @@ public void init() {

skullMaker = new SkullMaker();

spiritFactory = new SpiritFactory();

placeholderHeartInit();

heartRecipeManager = new HeartRecipeManager();
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/in/arcadelabs/lifesteal/commands/Eliminate.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import in.arcadelabs.labaide.libs.aikar.acf.annotation.CommandCompletion;
import in.arcadelabs.labaide.libs.aikar.acf.annotation.CommandPermission;
import in.arcadelabs.labaide.libs.aikar.acf.annotation.Subcommand;
import in.arcadelabs.labaide.libs.aikar.acf.bukkit.contexts.OnlinePlayer;
import in.arcadelabs.lifesteal.LifeSteal;
import in.arcadelabs.lifesteal.LifeStealPlugin;
import org.bukkit.entity.Player;

@CommandAlias("lifesteal|ls")
@CommandPermission("lifesteal.eliminate")
Expand All @@ -40,9 +40,9 @@ public class Eliminate extends BaseCommand {
*/
@Subcommand("eliminate")
@CommandCompletion("@players")
public void onEliminate(final Player target) {
lifeSteal.getUtils().setPlayerBaseHealth(target, 0);
lifeSteal.getUtils().handleElimination(target);
lifeSteal.getInteraction().broadcast("Messages.Elimination.ByCommand", target);
@CommandAlias("eliminate")
public void onEliminate(final OnlinePlayer target) {
lifeSteal.getUtils().handleElimination(target.getPlayer());
lifeSteal.getInteraction().broadcast("Messages.Elimination.ByCommand", target.getPlayer());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public class GiveHearts extends BaseCommand {

@Subcommand("givehearts")
@CommandCompletion("@players Blessed|Normal|Cursed @nothing")
@CommandAlias("givehearts")
public void onGiveHearts(final CommandSender sender, final OnlinePlayer target, final String type, final int amount) {
switch (type) {
case "Blessed" -> giveHearts("blessed", HeartItemManager.Mode.RANDOM_BLESSED, target.player, amount);
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/in/arcadelabs/lifesteal/commands/Reload.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ public void onReload(final CommandSender sender) throws IOException {
if (sender instanceof Player) {
final Player player = (Player) sender;
lifeSteal.getConfig().reload();
lifeSteal.getMessenger().sendMessage(player, "<gradient:e01e37:f52486>LifeSteal Core reloaded.</gradient>");
lifeSteal.getMessenger().sendConsoleMessage("<gradient:e01e37:f52486>LifeSteal Core reloaded.</gradient>");
lifeSteal.getMessenger().sendMessage(player, "<gradient:#e01e37:#f52486>LifeSteal Core reloaded.</gradient>");
lifeSteal.getMessenger().sendConsoleMessage("<gradient:#e01e37:#f52486>LifeSteal Core reloaded.</gradient>");
} else {
lifeSteal.getConfig().reload();
lifeSteal.getMessenger().sendConsoleMessage("<gradient:e01e37:f52486>LifeSteal Core reloaded.</gradient>");
lifeSteal.getMessenger().sendConsoleMessage("<gradient:#e01e37:#f52486>LifeSteal Core reloaded.</gradient>");
}
}
}
48 changes: 48 additions & 0 deletions src/main/java/in/arcadelabs/lifesteal/commands/Revive.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* LifeSteal - Yet another lifecore smp core.
* Copyright (C) 2022 Arcade Labs
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package in.arcadelabs.lifesteal.commands;

import in.arcadelabs.labaide.libs.aikar.acf.BaseCommand;
import in.arcadelabs.labaide.libs.aikar.acf.annotation.CommandAlias;
import in.arcadelabs.labaide.libs.aikar.acf.annotation.CommandCompletion;
import in.arcadelabs.labaide.libs.aikar.acf.annotation.CommandPermission;
import in.arcadelabs.labaide.libs.aikar.acf.annotation.Subcommand;
import in.arcadelabs.labaide.libs.aikar.acf.bukkit.contexts.OnlinePlayer;
import in.arcadelabs.lifesteal.LifeSteal;
import in.arcadelabs.lifesteal.LifeStealPlugin;

@CommandAlias("lifesteal|ls")
@CommandPermission("lifesteal.revive")
public class Revive extends BaseCommand {

private final LifeSteal lifeSteal = LifeStealPlugin.getLifeSteal();

/**
* On revive command.
*
* @param target the target
*/
@Subcommand("revive")
@CommandCompletion("@players")
@CommandAlias("revive")
public void onRevive(final OnlinePlayer target) {
lifeSteal.getUtils().handleRevive(target.getPlayer());
lifeSteal.getInteraction().broadcast("Messages.Revive.ByCommand", target.getPlayer());
}
}
5 changes: 3 additions & 2 deletions src/main/java/in/arcadelabs/lifesteal/commands/SetHearts.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ public class SetHearts extends BaseCommand {

@Subcommand("sethearts")
@CommandCompletion("@players @nothing true|false")
@CommandAlias("sethearts")
public void onSetHearts(final OnlinePlayer target, final int hearts) {
Player player = target.player;
lifeSteal.getUtils().setPlayerBaseHealth(player, hearts);
player.setHealth(hearts);
lifeSteal.getUtils().setPlayerBaseHealth(player, hearts * 2);
player.setHealth(hearts * 2);
}
}
3 changes: 2 additions & 1 deletion src/main/java/in/arcadelabs/lifesteal/commands/Withdraw.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,15 @@ public class Withdraw extends BaseCommand {
* @param hearts the hearts
*/
@Subcommand("withdraw")
@CommandAlias("withdraw")
public void onWithdraw(final CommandSender sender, final int hearts) {
final Player player = (Player) sender;
if (lifeSteal.getConfig().getStringList("Disabled-Worlds.Heart-Withdraw").size() != 0) {
disabledWorlds = lifeSteal.getConfig().getStringList("Disabled-Worlds.Heart-Withdraw");
}
if (!(disabledWorlds.contains(player.getWorld().toString().toLowerCase()))) {
if (hearts * 2 >= lifeSteal.getUtils().getPlayerBaseHealth(player)) {
lifeSteal.getMessenger().sendMessage(player, "Chutiye, aukat hai tera itna?");
lifeSteal.getMessenger().sendMessage(player, lifeSteal.getI18n().getKey("Messages.NotEnoughHearts"));
} else {
lifeSteal.getUtils().setPlayerBaseHealth(player, lifeSteal.getUtils().getPlayerBaseHealth(player) - hearts * 2);
heartItemManager = new HeartItemManager(HeartItemManager.Mode.valueOf(lifeSteal.getHeartConfig().getString("Hearts.Mode.OnWithdraw")))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* LifeSteal - Yet another lifecore smp core.
* Copyright (C) 2022 Arcade Labs
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package in.arcadelabs.lifesteal.listeners;

import in.arcadelabs.lifesteal.LifeStealPlugin;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;

public class PlayerDamageEvent implements Listener {
@EventHandler
public void onDamage(final EntityDamageEvent event) {
if(event.getCause() != EntityDamageEvent.DamageCause.WITHER) return;
if (!(LifeStealPlugin.getLifeSteal().getSpiritFactory().getSpirits().contains((Player) event.getEntity()))) return;
if(event.isCancelled()) return;
event.setCancelled(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import java.util.List;
import java.util.logging.Level;

public class PlayerKillListener implements Listener {
public class PlayerDeathListener implements Listener {

private final LifeSteal lifeSteal = LifeStealPlugin.getLifeSteal();
private HeartItemManager heartItemManager;
Expand All @@ -43,15 +43,15 @@ public class PlayerKillListener implements Listener {
public void onPlayerKilled(final PlayerDeathEvent event) {

final Player victim = event.getEntity();
final int lostHearts = lifeSteal.getConfig().getInt("HeartsToLose", 2);
final int lostHearts = lifeSteal.getConfig().getInt("HeartsToTransfer", 2);
if (lifeSteal.getUtils().getPlayerBaseHealth(victim) == 1 || lifeSteal.getUtils().getPlayerBaseHealth(victim) == 2) {
if (victim.getKiller() == null) {
lifeSteal.getInteraction().broadcast(
lifeSteal.getUtils().getEliminationMessage(victim.getLastDamageCause().getCause()), victim);
} else {
lifeSteal.getInteraction().broadcast(lifeSteal.getI18n().getKey("Messages.Elimination.ByPlayer"), victim);
}
lifeSteal.getUtils().handleElimination(victim);
lifeSteal.getUtils().handleElimination(victim, event);
} else {
if (victim.getKiller() == null) {
if (lifeSteal.getConfig().getStringList("Disabled-Worlds.Heart-Drops.Other").size() != 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package in.arcadelabs.lifesteal.listeners;

import in.arcadelabs.lifesteal.LifeStealPlugin;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPotionEffectEvent;
Expand All @@ -33,6 +34,12 @@ public void onPotionEffectEvent(final EntityPotionEffectEvent event) {
} else if (event.getCause() == EntityPotionEffectEvent.Cause.TOTEM) {
if (event.isCancelled()) return;
event.setCancelled(LifeStealPlugin.getLifeSteal().getConfig().getBoolean("DisableTotem"));
} else if (event.getEntity() instanceof Player player &&
LifeStealPlugin.getLifeSteal().getSpiritFactory().getSpirits().contains(player)) {
if (event.getCause() == EntityPotionEffectEvent.Cause.AREA_EFFECT_CLOUD ||
event.getCause() == EntityPotionEffectEvent.Cause.POTION_SPLASH) {
event.setCancelled(true);
}
}
}
}
Loading

0 comments on commit 86df07e

Please sign in to comment.