First commit.
This commit is contained in:
commit
5f25889f84
16 changed files with 378 additions and 0 deletions
12
.classpath
Normal file
12
.classpath
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="lib" path="/home/adrian/Downloads/craftbukkit-1060.jar"/>
|
||||||
|
<classpathentry combineaccessrules="false" kind="src" path="/tenkumaLib"/>
|
||||||
|
<classpathentry kind="output" path="bin"/>
|
||||||
|
</classpath>
|
||||||
17
.project
Normal file
17
.project
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>TheDevilWithin</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
2
.settings/org.eclipse.core.resources.prefs
Normal file
2
.settings/org.eclipse.core.resources.prefs
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding/<project>=UTF-8
|
||||||
9
.settings/org.eclipse.jdt.core.prefs
Normal file
9
.settings/org.eclipse.jdt.core.prefs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.jdt.core.compiler.release=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.8
|
||||||
BIN
bin/gd/rf/adrianvictor/devilwithin/CursesEntityListener.class
Normal file
BIN
bin/gd/rf/adrianvictor/devilwithin/CursesEntityListener.class
Normal file
Binary file not shown.
BIN
bin/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.class
Normal file
BIN
bin/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.class
Normal file
Binary file not shown.
BIN
bin/gd/rf/adrianvictor/devilwithin/Enchanting.class
Normal file
BIN
bin/gd/rf/adrianvictor/devilwithin/Enchanting.class
Normal file
Binary file not shown.
Binary file not shown.
BIN
bin/gd/rf/adrianvictor/devilwithin/TheDevilWithin.class
Normal file
BIN
bin/gd/rf/adrianvictor/devilwithin/TheDevilWithin.class
Normal file
Binary file not shown.
17
config.yml
Normal file
17
config.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
# ID of the block you should interact to enchant your armor
|
||||||
|
enchant_block: 57 # 57 = diamond block
|
||||||
|
|
||||||
|
enable_enchanting: true
|
||||||
|
# enables bad stuff when armor durability is low
|
||||||
|
enable_curses: true
|
||||||
|
|
||||||
|
# messages for when you enchant the items (supports color with &)
|
||||||
|
helmet_message: "&4I’m underneath your skin."
|
||||||
|
chestplate_message: "&4I'm gonna make you suffer."
|
||||||
|
leggings_message: "&4You'll never know what hit you."
|
||||||
|
boots_message: "&4Look what you made of me."
|
||||||
|
enable_insomnia_player_message_broadcast: true
|
||||||
|
insomnia_player_message: "I can't sleep."
|
||||||
|
insomnia_message: "&4Can't sleep. Can't breathe. Won't get no piece with me."
|
||||||
|
chestplate_burn_message: "&4You won't make me disappear, until I make you."
|
||||||
7
plugin.yml
Normal file
7
plugin.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
name: TheDevilWithin
|
||||||
|
main: gd.rf.adrianvictor.devilwithin.TheDevilWithin
|
||||||
|
description: Adds enchanting to Beta Minecraft.
|
||||||
|
author: tenkuma
|
||||||
|
website: https://adrianvictor.rf.gd/projects.html
|
||||||
|
depends: [tenkumaLib]
|
||||||
|
version: 1.0
|
||||||
43
src/gd/rf/adrianvictor/devilwithin/CursesEntityListener.java
Normal file
43
src/gd/rf/adrianvictor/devilwithin/CursesEntityListener.java
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
package gd.rf.adrianvictor.devilwithin;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.entity.EntityListener;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import gd.rf.adrianvictor.lib.Color;
|
||||||
|
import gd.rf.adrianvictor.lib.Text;
|
||||||
|
|
||||||
|
public class CursesEntityListener extends EntityListener { // Extending PlayerListener for legacy
|
||||||
|
|
||||||
|
org.bukkit.util.config.Configuration config;
|
||||||
|
|
||||||
|
public CursesEntityListener(JavaPlugin plugin) {
|
||||||
|
config = plugin.getConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
// curse for Chestplate. 10% chance to ignite player for 5 seconds
|
||||||
|
public void onEntityDamage(EntityDamageEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player)) return;
|
||||||
|
Player player = (Player)event.getEntity();
|
||||||
|
ItemStack chestplate = player.getInventory().getChestplate();
|
||||||
|
Random rand = new Random();
|
||||||
|
|
||||||
|
if (chestplate != null && chestplate.getType() == Material.CHAINMAIL_CHESTPLATE) {
|
||||||
|
short maxDurability = chestplate.getType().getMaxDurability();
|
||||||
|
short damage = chestplate.getDurability();
|
||||||
|
short remainingDurability = (short) (maxDurability - damage);
|
||||||
|
|
||||||
|
if (remainingDurability < (maxDurability / 3)) {
|
||||||
|
if (rand.nextInt(20) == 0) {
|
||||||
|
player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(config.getString("chestplate_burn_message", "&4You won't make me disappear, until I make you.")));
|
||||||
|
player.setFireTicks(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
66
src/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.java
Normal file
66
src/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.java
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
package gd.rf.adrianvictor.devilwithin;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerBedEnterEvent;
|
||||||
|
import org.bukkit.event.player.PlayerListener;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import gd.rf.adrianvictor.lib.Color;
|
||||||
|
import gd.rf.adrianvictor.lib.Text;
|
||||||
|
|
||||||
|
public class CursesPlayerListener extends PlayerListener {
|
||||||
|
|
||||||
|
org.bukkit.util.config.Configuration config;
|
||||||
|
|
||||||
|
public CursesPlayerListener(JavaPlugin plugin) {
|
||||||
|
config = plugin.getConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
// curse for Leggings. slows player down 50% of the onPlayerMove events to a random speed.
|
||||||
|
public void onPlayerMove(PlayerMoveEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
Random rand = new Random();
|
||||||
|
|
||||||
|
ItemStack leggings = player.getInventory().getLeggings();
|
||||||
|
|
||||||
|
if (leggings != null && leggings.getType() == Material.CHAINMAIL_LEGGINGS) {
|
||||||
|
short maxDurability = leggings.getType().getMaxDurability();
|
||||||
|
short damage = leggings.getDurability();
|
||||||
|
short remainingDurability = (short) (maxDurability - damage);
|
||||||
|
|
||||||
|
if (remainingDurability < (maxDurability / 3)) {
|
||||||
|
if (rand.nextBoolean()) {
|
||||||
|
Vector velocity = player.getVelocity();
|
||||||
|
double slowFactor = 0.3 + (rand.nextDouble() * 0.4);
|
||||||
|
player.setVelocity(velocity.multiply(slowFactor));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// curse for Helmet. Player cannot sleep.
|
||||||
|
public void onPlayerBedEnter(PlayerBedEnterEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
ItemStack helmet = player.getInventory().getHelmet();
|
||||||
|
|
||||||
|
if (helmet != null && helmet.getType() == Material.CHAINMAIL_HELMET) {
|
||||||
|
short maxDurability = helmet.getType().getMaxDurability();
|
||||||
|
short damage = helmet.getDurability();
|
||||||
|
short remainingDurability = (short) (maxDurability - damage);
|
||||||
|
|
||||||
|
if (remainingDurability < (maxDurability / 3)) {
|
||||||
|
if (config.getBoolean("enable_insomnia_player_message_broadcast", true)) {
|
||||||
|
player.chat(config.getString("insomnia_player_message", "I can't sleep."));
|
||||||
|
}
|
||||||
|
player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(config.getString("insomnia_message", "&4Can't sleep. Can't breathe. Won't get no piece with me.")));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
75
src/gd/rf/adrianvictor/devilwithin/Enchanting.java
Normal file
75
src/gd/rf/adrianvictor/devilwithin/Enchanting.java
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
package gd.rf.adrianvictor.devilwithin;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerListener;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import gd.rf.adrianvictor.lib.Color;
|
||||||
|
import gd.rf.adrianvictor.lib.ConfigurationEx;
|
||||||
|
import gd.rf.adrianvictor.lib.Text;
|
||||||
|
|
||||||
|
public class Enchanting extends PlayerListener {
|
||||||
|
|
||||||
|
int configEnchantBlockID;
|
||||||
|
String helmetMessage;
|
||||||
|
String chestplateMessage;
|
||||||
|
String leggingsMessage;
|
||||||
|
String bootsMessage;
|
||||||
|
ConfigurationEx config;
|
||||||
|
|
||||||
|
public Enchanting(JavaPlugin plugin) {
|
||||||
|
configEnchantBlockID = plugin.getConfiguration().getInt("enchant_block", 57);
|
||||||
|
helmetMessage = plugin.getConfiguration().getString("helmet_message", "&4I’m underneath your skin.");
|
||||||
|
chestplateMessage = plugin.getConfiguration().getString("chestplate_message", "&4I'm gonna make you suffer.");
|
||||||
|
leggingsMessage = plugin.getConfiguration().getString("leggings_message", "&4You'll never know what hit you.");
|
||||||
|
bootsMessage = plugin.getConfiguration().getString("boots_message", "&4Look what you made of me.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
|
if (event.getClickedBlock() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Material material = event.getClickedBlock().getType();
|
||||||
|
if (material == null) { return; }
|
||||||
|
|
||||||
|
ItemStack item = event.getItem();
|
||||||
|
if (item == null) { return; }
|
||||||
|
|
||||||
|
short durability = item.getDurability();
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (player == null) { return; }
|
||||||
|
|
||||||
|
Material itemMaterial = player.getItemInHand().getType();
|
||||||
|
if (material == Material.getMaterial(configEnchantBlockID)) {
|
||||||
|
switch(itemMaterial) {
|
||||||
|
case DIAMOND_HELMET:
|
||||||
|
item.setType(Material.CHAINMAIL_HELMET);
|
||||||
|
item.setDurability(durability);
|
||||||
|
player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(helmetMessage));
|
||||||
|
break;
|
||||||
|
case DIAMOND_CHESTPLATE:
|
||||||
|
item.setType(Material.CHAINMAIL_CHESTPLATE);
|
||||||
|
item.setDurability(durability);
|
||||||
|
player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(chestplateMessage));
|
||||||
|
break;
|
||||||
|
case DIAMOND_LEGGINGS:
|
||||||
|
item.setType(Material.CHAINMAIL_LEGGINGS);
|
||||||
|
item.setDurability(durability);
|
||||||
|
player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(leggingsMessage));
|
||||||
|
break;
|
||||||
|
case DIAMOND_BOOTS:
|
||||||
|
item.setType(Material.CHAINMAIL_BOOTS);
|
||||||
|
item.setDurability(durability);
|
||||||
|
player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(bootsMessage));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
package gd.rf.adrianvictor.devilwithin;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.entity.EntityListener;
|
||||||
|
|
||||||
|
public class EnchantingEntityListener extends EntityListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEntityDamage(EntityDamageEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player)) return;
|
||||||
|
Player player = (Player) event.getEntity();
|
||||||
|
double damage = event.getDamage();
|
||||||
|
double health = player.getHealth();
|
||||||
|
|
||||||
|
DamageCause cause = event.getCause();
|
||||||
|
|
||||||
|
if ((cause == DamageCause.FALL || cause == DamageCause.DROWNING || cause == DamageCause.FIRE_TICK || cause == DamageCause.FIRE || cause == DamageCause.CONTACT || cause == DamageCause.LAVA || cause == DamageCause.SUFFOCATION) &&
|
||||||
|
(isWearing(player, Material.CHAINMAIL_HELMET) && isWearing(player, Material.CHAINMAIL_CHESTPLATE) && isWearing(player, Material.CHAINMAIL_LEGGINGS) && isWearing(player, Material.CHAINMAIL_BOOTS)))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// **1. If damage is lethal, allow it**
|
||||||
|
if (damage >= health) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cause == DamageCause.FALL && isWearing(player, Material.CHAINMAIL_BOOTS)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cause == DamageCause.DROWNING && isWearing(player, Material.CHAINMAIL_HELMET)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((cause == DamageCause.FIRE_TICK || cause == DamageCause.LAVA) && isWearing(player, Material.CHAINMAIL_CHESTPLATE)) {
|
||||||
|
short maxDurability = player.getInventory().getChestplate().getType().getMaxDurability();
|
||||||
|
short armorDamage = player.getInventory().getChestplate().getDurability();
|
||||||
|
short remainingDurability = (short) (maxDurability - armorDamage);
|
||||||
|
Random random = new Random();
|
||||||
|
|
||||||
|
if ((remainingDurability < (maxDurability / 3)) && random.nextInt(2) == 0) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
} else if (remainingDurability > (maxDurability / 3)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((cause == DamageCause.CONTACT) && isWearing(player, Material.CHAINMAIL_LEGGINGS)) {
|
||||||
|
Random random = new Random();
|
||||||
|
if (random.nextInt(2) == 1) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isWearing(Player player, Material piece) {
|
||||||
|
switch (piece) {
|
||||||
|
case CHAINMAIL_BOOTS:
|
||||||
|
return player.getInventory().getBoots() != null && player.getInventory().getBoots().getType() == piece;
|
||||||
|
case CHAINMAIL_HELMET:
|
||||||
|
return player.getInventory().getHelmet() != null && player.getInventory().getHelmet().getType() == piece;
|
||||||
|
case CHAINMAIL_CHESTPLATE:
|
||||||
|
return player.getInventory().getChestplate() != null && player.getInventory().getChestplate().getType() == piece;
|
||||||
|
case CHAINMAIL_LEGGINGS:
|
||||||
|
return player.getInventory().getLeggings() != null && player.getInventory().getLeggings().getType() == piece;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
src/gd/rf/adrianvictor/devilwithin/TheDevilWithin.java
Normal file
54
src/gd/rf/adrianvictor/devilwithin/TheDevilWithin.java
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
package gd.rf.adrianvictor.devilwithin;
|
||||||
|
|
||||||
|
import org.bukkit.event.Event.Priority;
|
||||||
|
import org.bukkit.event.Event.Type;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import gd.rf.adrianvictor.lib.ConfigurationEx;
|
||||||
|
import gd.rf.adrianvictor.lib.Log;
|
||||||
|
import gd.rf.adrianvictor.lib.logger;
|
||||||
|
|
||||||
|
public class TheDevilWithin extends JavaPlugin {
|
||||||
|
|
||||||
|
ConfigurationEx config;
|
||||||
|
Enchanting enchanting;
|
||||||
|
CursesPlayerListener cursesPL;
|
||||||
|
EnchantingEntityListener enchantingEL;
|
||||||
|
CursesEntityListener cursesEL;
|
||||||
|
Log logger;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
logger = new Log(this);
|
||||||
|
config = new ConfigurationEx(this, "config.yml", logger);
|
||||||
|
PluginManager mgr = this.getServer().getPluginManager();
|
||||||
|
enchanting = new Enchanting(this);
|
||||||
|
cursesPL = new CursesPlayerListener(this);
|
||||||
|
cursesEL = new CursesEntityListener(this);
|
||||||
|
enchantingEL = new EnchantingEntityListener();
|
||||||
|
config.loadConfig();
|
||||||
|
if (this.getConfiguration().getBoolean("enable_curses", true)) {
|
||||||
|
mgr.registerEvent(Type.PLAYER_MOVE, cursesPL, Priority.Normal, this);
|
||||||
|
mgr.registerEvent(Type.PLAYER_BED_ENTER, cursesPL, Priority.Normal, this);
|
||||||
|
mgr.registerEvent(Type.ENTITY_DAMAGE, cursesEL, Priority.Normal, this);
|
||||||
|
logger.info(this + " curses are enabled");
|
||||||
|
} else {
|
||||||
|
logger.info(this + " curses are disabled by the config");
|
||||||
|
}
|
||||||
|
mgr.registerEvent(Type.ENTITY_DAMAGE, enchantingEL, Priority.Normal, this);
|
||||||
|
if (this.getConfiguration().getBoolean("enable_enchanting", true)) {
|
||||||
|
mgr.registerEvent(Type.PLAYER_INTERACT, enchanting, Priority.Normal, this);
|
||||||
|
logger.info(this + " enchanting is enabled");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
logger.info(this + " enchanting is disabled by the config");
|
||||||
|
}
|
||||||
|
logger.info(this + " started");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
logger.info(this + " disabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue