Skip to content

Commit

Permalink
Skillbinds bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
NeumimTo committed May 28, 2021
1 parent f3a2d03 commit ed7cdd5
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 14 deletions.
3 changes: 3 additions & 0 deletions Common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ dependencies {

}

def currentJvm = org.gradle.internal.jvm.Jvm.current()
println currentJvm

compileJava {
options.compilerArgs += ["-parameters"]
options.fork = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Skills: [
range: "5 + 5 * level"
damage: "7 + level"
cooldown: "9000 + level * 250"
mana: "6 + level * 0.5"
manacost: "10 + level * 0.5"
}
}
{
Expand All @@ -37,7 +37,7 @@ Skills: [
velocity: 2
damage: "5 + level * 0.5"
cooldown: "5000 - level * 700"
mana: 3
manacost: 5
}
}
{
Expand All @@ -55,7 +55,7 @@ Skills: [
SkillSettings: {
max-distance: "20 + level"
cooldown: "7000 - level * 10"
mana: "5 + level * 0.5"
manacost: "5 + level * 0.5"
damage: "2 + level * 0.2"
slow-duration: "3000 + level * 650"
}
Expand All @@ -75,7 +75,7 @@ Skills: [
damage: "2*level + 10"
range: 25
distance: 25
mana: 3
manacost: 3
}
}
{
Expand Down Expand Up @@ -134,7 +134,7 @@ Skills: [
}
}
SkillSettings {
mana: "5 + level * 1.45"
manacost: "5 + level * 1.45"
}
}
{
Expand All @@ -150,7 +150,7 @@ Skills: [
Icon: "minecraft:firework_rocket"
SkillTreeId: 8
SkillSettings {
mana: 5
manacost: 5
range: 10
blast-radius: 2
damage: "5 + level"
Expand All @@ -171,7 +171,7 @@ Skills: [
SkillSettings {
range: "15 + level"
cooldown: 25000
mana: 1
manacost: 1
}
HardDepends {
"ntrpg:fireball": 1
Expand Down Expand Up @@ -372,7 +372,7 @@ Skills: [
SkillSettings {
cooldown: 15000
duration: 3500
mana: 7
manacost: 7
}
}
{
Expand All @@ -386,7 +386,7 @@ Skills: [
SkillSettings {
cooldown: 7000
duration: 5000
mana: 10
manacost: 10
}
}
{
Expand All @@ -400,7 +400,7 @@ Skills: [
SkillSettings {
cooldown: 7000
duration: 5000
mana: 10
manacost: 10
}
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public ManaBarText(ISpigotCharacter consumer) {
@Override
public void onTick(IEffect self) {
double percentage = MathUtils.getPercentage(character.getMana().getValue(), character.getMana().getMaxValue());
percentage = percentage > 100 ? 100 : percentage;
percentage = percentage < 0 ? 0 : percentage;
BaseComponent[] stringg = ROWS[(int)Math.round(percentage / 5)];
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, stringg);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void process(EntityDamageByEntityEvent event, ISpigotEntity target) {
}

public void process(Block block) {
if (consumer != null) blockHit.accept(block);
if (blockHit != null) blockHit.accept(block);
}

public void setSkill(PlayerSkillContext info) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
import cz.neumimto.rpg.spigot.entities.players.SpigotCharacterService;
import cz.neumimto.rpg.spigot.inventory.SpigotInventoryService;
import de.tr7zw.nbtapi.NBTItem;
import io.lumine.xikage.mythicmobs.skills.mechanics.SendToastMechanic;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

import javax.inject.Inject;

Expand All @@ -37,10 +39,11 @@ public class OnKeyPress implements Listener {
@EventHandler
public void onCharacterHeldItemChange(PlayerItemHeldEvent event) {
Player player = event.getPlayer();
if (player.getOpenInventory().getType() == InventoryType.CRAFTING) {
if (player.getOpenInventory().getType() != InventoryType.CRAFTING) {
return;
}
ItemStack item = player.getInventory().getItem(event.getNewSlot());
PlayerInventory inventory = player.getInventory();
ItemStack item = inventory.getItem(event.getNewSlot());
if (item == null || item.getType() == Material.AIR) {
return;
}
Expand All @@ -49,7 +52,16 @@ public void onCharacterHeldItemChange(PlayerItemHeldEvent event) {
String skillName = nbtItem.getString(SpigotInventoryService.SKILLBIND);
ISpigotCharacter character = characterService.getCharacter(player);
commandFacade.executeSkill(character, skillName);
player.getInventory().setHeldItemSlot(event.getPreviousSlot());
int previousSlot = event.getPreviousSlot();
ItemStack prevItem = inventory.getItem(previousSlot);
if (prevItem != null) {
NBTItem nbtItem1 = new NBTItem(prevItem);
if (!nbtItem1.hasKey(SpigotInventoryService.SKILLBIND)) {
inventory.setHeldItemSlot(event.getPreviousSlot());
}
} else {
inventory.setHeldItemSlot(event.getPreviousSlot());
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package cz.neumimto.rpg.spigot.scripting.mechanics;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import cz.neumimto.rpg.api.RpgApi;
import cz.neumimto.rpg.common.skills.scripting.Handler;
import cz.neumimto.rpg.common.skills.scripting.Target;
import cz.neumimto.rpg.spigot.SpigotRpgPlugin;
import cz.neumimto.rpg.spigot.entities.players.ISpigotCharacter;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey;
import org.bukkit.advancement.Advancement;
import org.bukkit.advancement.AdvancementProgress;
import org.bukkit.entity.Player;

import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.UUID;

//https://minecraft.fandom.com/wiki/Advancement/JSON_format
@Singleton
public class ToastMechanic {
private static final Gson gson = new Gson();

public static final String challenge = "challenge";
public static final String goal = "goal";
public static final String frame = "frame";

@Inject
private RpgApi rpgApi;

@Handler
public void sendToPlayer(@Target ISpigotCharacter character,
String message,
String icon,
String nbt,
String frame,
String background,
String desc) {
NamespacedKey id = new NamespacedKey(SpigotRpgPlugin.getInstance(), "ntrpg-fake-" + UUID.randomUUID());

Bukkit.getUnsafe().loadAdvancement(id, createToastData(
message,
frame,
icon,
nbt,
background,
desc
));
Player player = character.getPlayer();
Advancement advancement = Bukkit.getAdvancement(id);
if (advancement == null) {
throw new CouldNotCreateToastMessage(message);
}
AdvancementProgress advancementProgress = player.getAdvancementProgress(advancement);
if (!advancementProgress.isDone()) {
advancementProgress.getRemainingCriteria().forEach(advancementProgress::awardCriteria);
}
rpgApi.scheduleSyncLater(() -> {
if (advancementProgress.isDone()) {
advancementProgress.getRemainingCriteria().forEach(advancementProgress::revokeCriteria);
}
Bukkit.getUnsafe().removeAdvancement(id);
});
}

private String createToastData(String message, String frame, String itemId, String iconNbt, String background, String description) {
JsonObject root = new JsonObject();

JsonObject icon = new JsonObject();
icon.addProperty("item", itemId);
if (iconNbt != null) {
icon.addProperty("nbt", iconNbt);
}
root.add("icon", icon);

JsonObject display = new JsonObject();



display.addProperty("title", message);
display.addProperty("frame", frame);
if (background == null) {
background = "minecraft:textures/gui/advancements/backgrounds/adventure.png";
}
display.addProperty("background", background);
display.addProperty("description", description);
display.addProperty("show_toast", true);
display.addProperty("announce_to_chat", false);
display.addProperty("hidden", true);
root.add("display", display);

JsonObject criteria = new JsonObject();
JsonObject trigger = new JsonObject();
trigger.addProperty("trigger", "minecraft:impossible");
criteria.add("impossible", trigger); //command advancement
root.add("criteria", criteria);


return gson.toJson(root);
}

private static class CouldNotCreateToastMessage extends RuntimeException {
public CouldNotCreateToastMessage(String message) {
super(message);
}
}

}

0 comments on commit ed7cdd5

Please sign in to comment.