1.20.4 struggles
This commit is contained in:
1 parent
78ca4f0df1
commit
c67697e5f9
16 files changed
+158
-121
No files matched your search
+1
-10
@@ -117,7 +117,7 @@
|
||||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.20.2-R0.1-SNAPSHOT</version>
|
||||
<version>1.20.4-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -131,14 +131,5 @@
|
||||
<version>7.0.9</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- NMS dependency -->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.20.2-R0.1-SNAPSHOT</version>
|
||||
<classifier>remapped-mojang</classifier>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -59,7 +59,7 @@ public class AdminCommandManager implements TabExecutor {
|
||||
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(Component.text("The console cannot perform these commands."));
|
||||
return false; // TODO make this subcommand specific
|
||||
return false; // TODO make this subcommand specific - quite hard; abstract subcommand has Player in signature
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public final class PureKitPvP extends JavaPlugin {
|
||||
// Has to be at the start because other class constructors use it
|
||||
|
||||
getConfig().options().copyDefaults();
|
||||
saveDefaultConfig();
|
||||
saveConfig();
|
||||
|
||||
//Kits config
|
||||
KitConfig.setup();
|
||||
|
||||
+6
-1
@@ -108,7 +108,12 @@ public class DeathHandler implements Listener {
|
||||
player.setFireTicks(0);
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 5, 1));
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 10 , 1));
|
||||
player.setHealth(20);
|
||||
if (EventDataClass.doubleHealth){
|
||||
player.setHealth(40);
|
||||
} else {
|
||||
player.setHealth(20);
|
||||
}
|
||||
|
||||
|
||||
}, 2L);
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ public class KitIcon {
|
||||
"chiseled_sandstone",
|
||||
"cut_sandstone",
|
||||
"cobweb",
|
||||
"grass",
|
||||
"short_grass",
|
||||
"fern",
|
||||
"azalea",
|
||||
"flowering_azalea",
|
||||
|
||||
@@ -78,11 +78,11 @@ public class LanguageConfig {
|
||||
&rGain 1 XP level on kill
|
||||
""");
|
||||
defaults.put("PERKS_PERK_NOTORIETY", """
|
||||
&r15% chance of gaining a sharpness level on each kill
|
||||
&rwill be added to the item held
|
||||
&rChance of gaining a sharpness level on each kill
|
||||
&rChance is 100 - (25 * Sharpness Level) percent
|
||||
""");
|
||||
defaults.put("PERKS_PERK_NOTORIETY_MAX", "&eYou have reached the maximum Notoriety!");
|
||||
defaults.put("PERKS_PERK_NOTORIETY_UPGRADE", "&eYour sharpness level has increased!");
|
||||
defaults.put("PERKS_PERK_NOTORIETY_UPGRADE", "&eYour sharpness level has increased (chance of %CHANCE%%)!");
|
||||
defaults.put("PERKS_PERK_ENDERMAGIC", """
|
||||
&r30% chance of gaining an ender pearl on kill
|
||||
""");
|
||||
@@ -111,10 +111,10 @@ public class LanguageConfig {
|
||||
&ryou dealt, as instant health
|
||||
""");
|
||||
defaults.put("PERKS_PERK_MARKSMAN", """
|
||||
&r50% chance of gaining a power level on each bow kill
|
||||
&rPower is added to the item held, if it's a bow
|
||||
&rChance of 100 - (25 * Power level) percent to
|
||||
&radd power to the item held, if it's a bow
|
||||
""");
|
||||
defaults.put("PERKS_PERK_MARKSMAN_UPGRADE","&eYour power level has increased!");
|
||||
defaults.put("PERKS_PERK_MARKSMAN_UPGRADE","&eYour power level has increased (chance of %CHANCE%%)!");
|
||||
defaults.put("PERKS_PERK_MARKSMAN_MAX","&eYou have reached the maximum power level!");
|
||||
defaults.put("PERKS_PERK_APOLLO", """
|
||||
&rYou get each arrow you hit on a player back
|
||||
@@ -167,6 +167,7 @@ public class LanguageConfig {
|
||||
""");
|
||||
defaults.put("EVENTS_PICKUP_DESC", "Killed players drop their stuff!");
|
||||
defaults.put("EVENTS_JUGGERNAUT_DESC", "Team up to kill the Juggernaut!");
|
||||
defaults.put("EVENTS_DOUBLE_DESC", "All player health is doubled!");
|
||||
|
||||
defaults.put("SCOREBOARD_MAIN_TITLE", "&6PureKitPvP");
|
||||
defaults.put("SCOREBOARD_PERSONAL_TITLE", "&6Personal Stats");
|
||||
|
||||
+5
-2
@@ -1,5 +1,6 @@
|
||||
package me.lifelessnerd.purekitpvp.globalevents.events;
|
||||
|
||||
import me.lifelessnerd.purekitpvp.files.LanguageConfig;
|
||||
import me.lifelessnerd.purekitpvp.globalevents.EventDataClass;
|
||||
import me.lifelessnerd.purekitpvp.utils.PlayerUtils;
|
||||
import net.kyori.adventure.text.Component;
|
||||
@@ -28,7 +29,7 @@ public class DoubleHealthEvent extends AbstractEvent{
|
||||
|
||||
@Override
|
||||
public Component getEventDescription() {
|
||||
return Component.text(""); // TODO add lang defs
|
||||
return LanguageConfig.lang.get("EVENTS_DOUBLE_DESC"); // TODO add lang defs
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -39,6 +40,7 @@ public class DoubleHealthEvent extends AbstractEvent{
|
||||
for (Player player : players){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(40.0D);
|
||||
player.setHealth(40.0D);
|
||||
}
|
||||
startEndListener(null);
|
||||
}
|
||||
@@ -54,7 +56,8 @@ public class DoubleHealthEvent extends AbstractEvent{
|
||||
Set<Player> players = PlayerUtils.getPlayersInWorld(plugin.getConfig().getString("world"));
|
||||
for (Player player : players){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(40.0D);
|
||||
attribute.setBaseValue(20.0D);
|
||||
player.setHealth(20.0D);
|
||||
}
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
+1
@@ -29,6 +29,7 @@ public class DoubleHealthListeners implements Listener {
|
||||
if (EventDataClass.doubleHealth){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(40.0D);
|
||||
player.setHealth(40.0D);
|
||||
// TODO and set HP to be max instantly DO THIS EVERYWHERE
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -80,6 +80,8 @@ public class PerkCommand implements CommandExecutor {
|
||||
kitItem.setItemMeta(kitItemMeta);
|
||||
perksInventory.setItem(49, kitItem);
|
||||
|
||||
// Notoriety and marksman perk lore could be better if we replaceText with the config value; but then there
|
||||
// would need to be edge cases below (if notoriety -> replace lore with value ) - dats ugly tho
|
||||
|
||||
//Fill perk slots with either empty or actual perk icon
|
||||
for (int index = 20; index <= 24; index++){
|
||||
|
||||
-1
@@ -10,7 +10,6 @@ import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.apache.commons.codec.language.bm.Lang;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
+25
-17
@@ -6,7 +6,6 @@ import me.lifelessnerd.purekitpvp.files.LanguageConfig;
|
||||
import me.lifelessnerd.purekitpvp.files.PerkData;
|
||||
import me.lifelessnerd.purekitpvp.files.PlayerStatsConfig;
|
||||
import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
|
||||
import net.minecraft.locale.Language;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
@@ -74,12 +73,14 @@ public class PerkFireHandler {
|
||||
break;
|
||||
case "NOTORIETY":
|
||||
|
||||
if(Math.random() <= 0.15) {
|
||||
ItemStack weapon = player.getInventory().getItemInMainHand();
|
||||
ItemMeta weaponMeta = weapon.getItemMeta();
|
||||
if (weaponMeta == null){continue;} // If weapon is hand TODO maybe - check if it is a weapon?
|
||||
int sharpnessLevel = weaponMeta.getEnchantLevel(Enchantment.DAMAGE_ALL);
|
||||
ItemStack weapon = player.getInventory().getItemInMainHand();
|
||||
ItemMeta weaponMeta = weapon.getItemMeta();
|
||||
if (weaponMeta == null){continue;} // If weapon is hand TODO maybe - check if it is a weapon?
|
||||
if (weapon.getType() == Material.BOW){continue;} // meh
|
||||
int sharpnessLevel = weaponMeta.getEnchantLevel(Enchantment.DAMAGE_ALL);
|
||||
|
||||
double rnd = Math.random();
|
||||
if(rnd * 100 <= (100 - plugin.getConfig().getInt("notoriety-chance-decrease") * sharpnessLevel)) {
|
||||
if (plugin.getConfig().getInt("notoriety-maximum") != -1){
|
||||
// So if the boundary is set to SOME value
|
||||
if (sharpnessLevel >= plugin.getConfig().getInt("notoriety-maximum")){
|
||||
@@ -91,7 +92,9 @@ public class PerkFireHandler {
|
||||
weaponMeta.removeEnchant(Enchantment.DAMAGE_ALL);
|
||||
weaponMeta.addEnchant(Enchantment.DAMAGE_ALL, sharpnessLevel + 1, true);
|
||||
weapon.setItemMeta(weaponMeta);
|
||||
player.sendMessage(LanguageConfig.lang.get("PERKS_PERK_NOTORIETY_UPGRADE"));
|
||||
player.sendMessage(LanguageConfig.lang.get("PERKS_PERK_NOTORIETY_UPGRADE").
|
||||
replaceText(ComponentUtils.replaceConfig("%CHANCE%",
|
||||
String.valueOf(100 - plugin.getConfig().getInt("notoriety-chance-decrease") * sharpnessLevel))));
|
||||
}
|
||||
break;
|
||||
case "ENDERMAGIC":
|
||||
@@ -107,12 +110,15 @@ public class PerkFireHandler {
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 200, 1));
|
||||
break;
|
||||
case "MARKSMAN":
|
||||
if(Math.random() <= 0.5) {
|
||||
ItemStack weapon = player.getInventory().getItemInMainHand();
|
||||
ItemMeta weaponMeta = weapon.getItemMeta();
|
||||
if (weapon.getType() != Material.BOW){continue;}
|
||||
if (weaponMeta == null){continue;} // If weapon is hand
|
||||
int powerLevel = weaponMeta.getEnchantLevel(Enchantment.ARROW_DAMAGE);
|
||||
|
||||
ItemStack weaponMarksman = player.getInventory().getItemInMainHand();
|
||||
ItemMeta weaponMarksmanMeta = weaponMarksman.getItemMeta();
|
||||
if (weaponMarksman.getType() != Material.BOW){continue;}
|
||||
if (weaponMarksmanMeta == null){continue;} // If weapon is hand
|
||||
int powerLevel = weaponMarksmanMeta.getEnchantLevel(Enchantment.ARROW_DAMAGE);
|
||||
|
||||
double rnd2 = Math.random();
|
||||
if(rnd2 * 100 <= (100 - plugin.getConfig().getInt("notoriety-chance-decrease") * powerLevel)) {
|
||||
|
||||
if (plugin.getConfig().getInt("marksman-maximum") != -1){
|
||||
// So if the boundary is set to SOME value
|
||||
@@ -122,10 +128,12 @@ public class PerkFireHandler {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
weaponMeta.removeEnchant(Enchantment.ARROW_DAMAGE);
|
||||
weaponMeta.addEnchant(Enchantment.ARROW_DAMAGE, powerLevel + 1, true);
|
||||
weapon.setItemMeta(weaponMeta);
|
||||
player.sendMessage(LanguageConfig.lang.get("PERKS_PERK_MARKSMAN_UPGRADE"));
|
||||
weaponMarksmanMeta.removeEnchant(Enchantment.ARROW_DAMAGE);
|
||||
weaponMarksmanMeta.addEnchant(Enchantment.ARROW_DAMAGE, powerLevel + 1, true);
|
||||
weaponMarksman.setItemMeta(weaponMarksmanMeta);
|
||||
player.sendMessage(LanguageConfig.lang.get("PERKS_PERK_MARKSMAN_UPGRADE").
|
||||
replaceText(ComponentUtils.replaceConfig("%CHANCE%",
|
||||
String.valueOf(100 - plugin.getConfig().getInt("notoriety-chance-decrease") * powerLevel))));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package me.lifelessnerd.purekitpvp;
|
||||
|
||||
|
||||
import me.lifelessnerd.purekitpvp.utils.MyStringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
@@ -10,12 +12,37 @@ public class sample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Double doublet = 0.1;
|
||||
|
||||
Double inty = 23.0;
|
||||
System.out.println(doublet);
|
||||
System.out.println(mapStringToEnchantment("{CraftEnchantment[minecraft:knockback]=2, CraftEnchantment[minecraft:fire_aspect]=2}"));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static String mapStringToEnchantment(String string){
|
||||
|
||||
//I {Enchantment:[minecraft:fire_protection, PROTECTION_FIRE]=4, Enchantment:[minecraft:infinity, INFINITY]=1}
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
StringBuilder builder = new StringBuilder(string);
|
||||
builder.deleteCharAt(0);
|
||||
builder.deleteCharAt(string.length() - 2);
|
||||
string = builder.toString();
|
||||
String[] split = string.split("minecraft:");
|
||||
for (int index = 1; index < split.length; index++){
|
||||
String word = split[index];
|
||||
|
||||
String[] splitAgain = word.split(",");
|
||||
String levelString = splitAgain[1];
|
||||
String[] isolateLevel = levelString.split("=");
|
||||
int level = Integer.parseInt(isolateLevel[isolateLevel.length - 1]);
|
||||
word = splitAgain[0];
|
||||
word = MyStringUtils.itemCamelCase(word);
|
||||
result.append(word).append(level).append(" ");
|
||||
}
|
||||
|
||||
|
||||
return result.toString();
|
||||
//Output: Fire Protection 4, Infinity 1
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,64 +1,64 @@
|
||||
package me.lifelessnerd.purekitpvp.scoreboards;
|
||||
|
||||
|
||||
import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
|
||||
import me.lifelessnerd.purekitpvp.utils.PlayerUtils;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minecraft.network.protocol.game.ClientboundTabListPacket;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
public class TabManager {
|
||||
|
||||
private Plugin plugin;
|
||||
private Component header = Component.text("");
|
||||
private Component footer = Component.text("");
|
||||
|
||||
public TabManager(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
// CURRENTLY NOT IN USE
|
||||
public void showTab(){
|
||||
if(header == null && footer == null) return;
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
// CURRENTLY NOT IN USE
|
||||
|
||||
net.minecraft.network.chat.Component headerTBS = ComponentUtils.toMojangComponent(header);
|
||||
net.minecraft.network.chat.Component footerTBS = ComponentUtils.toMojangComponent(footer);
|
||||
|
||||
ClientboundTabListPacket packet = new ClientboundTabListPacket(headerTBS, footerTBS);
|
||||
|
||||
Set<Player> inWorld = PlayerUtils.getPlayersInWorld(plugin.getConfig().getString("world"));
|
||||
if (inWorld.size() != 0){
|
||||
for (Player player : inWorld){
|
||||
CraftPlayer cPlayer = (CraftPlayer) player; // frick nms
|
||||
ServerPlayer serverPlayer = cPlayer.getHandle();
|
||||
serverPlayer.connection.send(packet);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}, 10, plugin.getConfig().getLong("tab-refresh-period"));
|
||||
|
||||
}
|
||||
// CURRENTLY NOT IN USE
|
||||
public void addHeader(Component header){
|
||||
this.header = this.header.append(header).appendNewline();
|
||||
}
|
||||
public void addFooter(Component footer){
|
||||
this.footer = this.footer.append(footer).appendNewline();
|
||||
}
|
||||
}
|
||||
//package me.lifelessnerd.purekitpvp.scoreboards;
|
||||
//
|
||||
//
|
||||
//import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
|
||||
//import me.lifelessnerd.purekitpvp.utils.PlayerUtils;
|
||||
//import net.kyori.adventure.text.Component;
|
||||
//import net.minecraft.network.protocol.game.ClientboundTabListPacket;
|
||||
//import net.minecraft.server.level.ServerPlayer;
|
||||
//import org.bukkit.Bukkit;
|
||||
//import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer;
|
||||
//import org.bukkit.entity.Player;
|
||||
//import org.bukkit.plugin.Plugin;
|
||||
//
|
||||
//import java.util.Set;
|
||||
//
|
||||
//
|
||||
//public class TabManager {
|
||||
//
|
||||
// private Plugin plugin;
|
||||
// private Component header = Component.text("");
|
||||
// private Component footer = Component.text("");
|
||||
//
|
||||
// public TabManager(Plugin plugin) {
|
||||
// this.plugin = plugin;
|
||||
// }
|
||||
// // CURRENTLY NOT IN USE
|
||||
// public void showTab(){
|
||||
// if(header == null && footer == null) return;
|
||||
//
|
||||
// Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void run() {
|
||||
//
|
||||
// // CURRENTLY NOT IN USE
|
||||
//
|
||||
// net.minecraft.network.chat.Component headerTBS = ComponentUtils.toMojangComponent(header);
|
||||
// net.minecraft.network.chat.Component footerTBS = ComponentUtils.toMojangComponent(footer);
|
||||
//
|
||||
// ClientboundTabListPacket packet = new ClientboundTabListPacket(headerTBS, footerTBS);
|
||||
//
|
||||
// Set<Player> inWorld = PlayerUtils.getPlayersInWorld(plugin.getConfig().getString("world"));
|
||||
// if (inWorld.size() != 0){
|
||||
// for (Player player : inWorld){
|
||||
// CraftPlayer cPlayer = (CraftPlayer) player; // frick nms
|
||||
// ServerPlayer serverPlayer = cPlayer.getHandle();
|
||||
// serverPlayer.connection.send(packet);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
// }, 10, plugin.getConfig().getLong("tab-refresh-period"));
|
||||
//
|
||||
// }
|
||||
// // CURRENTLY NOT IN USE
|
||||
// public void addHeader(Component header){
|
||||
// this.header = this.header.append(header).appendNewline();
|
||||
// }
|
||||
// public void addFooter(Component footer){
|
||||
// this.footer = this.footer.append(footer).appendNewline();
|
||||
// }
|
||||
//}
|
||||
@@ -115,14 +115,6 @@ public class ComponentUtils {
|
||||
return textComponent;
|
||||
}
|
||||
|
||||
public static net.minecraft.network.chat.Component toMojangComponent(@Nullable Component inputComponent){
|
||||
if (inputComponent == null){
|
||||
return net.minecraft.network.chat.Component.literal("");
|
||||
}
|
||||
String json = GsonComponentSerializer.gson().serialize(inputComponent);
|
||||
return net.minecraft.network.chat.Component.Serializer.fromJson(json);
|
||||
}
|
||||
|
||||
public static TextReplacementConfig replaceConfig(String find, String replace){
|
||||
return replaceConfig(find, replace, 1);
|
||||
}
|
||||
|
||||
@@ -26,13 +26,15 @@ public class MyStringUtils {
|
||||
}
|
||||
|
||||
public static String mapStringToEnchantment(String string){
|
||||
///TODO Enchantment has become CraftEnchantment - breaks everything?!
|
||||
//I {Enchantment:[minecraft:fire_protection, PROTECTION_FIRE]=4, Enchantment:[minecraft:infinity, INFINITY]=1}
|
||||
System.out.println(string);
|
||||
|
||||
//I {Enchantment:[minecraft:fire_protection, PROTECTION_FIRE]=4, Enchantment:[minecraft:infinity, INFINITY]=1}
|
||||
StringBuilder result = new StringBuilder("");
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
StringBuilder builder = new StringBuilder(string);
|
||||
builder.deleteCharAt(0);
|
||||
builder.deleteCharAt(string.length() -2);
|
||||
builder.deleteCharAt(string.length() - 2);
|
||||
string = builder.toString();
|
||||
String[] split = string.split("minecraft:");
|
||||
for (int index = 1; index < split.length; index++){
|
||||
@@ -41,7 +43,7 @@ public class MyStringUtils {
|
||||
String[] splitAgain = word.split(",");
|
||||
String levelString = splitAgain[1];
|
||||
String[] isolateLevel = levelString.split("=");
|
||||
int level = Integer.parseInt(isolateLevel[isolateLevel.length - 1]); //HERE
|
||||
int level = Integer.parseInt(isolateLevel[isolateLevel.length - 1]);
|
||||
word = splitAgain[0];
|
||||
word = MyStringUtils.itemCamelCase(word);
|
||||
result.append(word).append(level).append(" ");
|
||||
|
||||
@@ -50,11 +50,17 @@ loottable-message-percentage: 1
|
||||
#Set to -1 if infinite
|
||||
notoriety-maximum: -1
|
||||
|
||||
# Notoriety chance depends on sharpness level already on the item - upgrade chance is (100 - (%DECREASE% * Sharpness Level))
|
||||
notoriety-chance-decrease: 25
|
||||
|
||||
#Marksman perk boundary
|
||||
#If the marksman perk is too OP, restrict the maximum level of power that can be gained
|
||||
#Set to -1 if infinite
|
||||
marksman-maximum: -1
|
||||
|
||||
# Marksman chance depends on power level already on the item - upgrade chance is (100 - (%DECREASE% * Power Level))
|
||||
marksman-chance-decrease: 25
|
||||
|
||||
#Default kill effect
|
||||
default-kill-effect: "firework"
|
||||
|
||||
@@ -70,7 +76,7 @@ projectile-trail-period: 1
|
||||
|
||||
# Projectile trail count
|
||||
# Amount of particles per spawn (also controlled by projectile-trail-period)
|
||||
projectile-trail-count: 5
|
||||
projectile-trail-count: 1
|
||||
|
||||
# Chicken prevention: kits with eggs might spawn chicken; when this is true they are prevented from spawning
|
||||
chicken-prevention: true
|
||||
|
||||
Reference in new issue
Block a user