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