v0.1.8
Added /excavate [amount].
This commit is contained in:
parent
3282950e62
commit
298c49602e
2
pom.xml
2
pom.xml
@ -2,7 +2,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.hyperling.minecraft</groupId>
|
||||
<artifactId>CoderDojoEVV</artifactId>
|
||||
<version>0.1.7-SNAPSHOT</version>
|
||||
<version>0.1.8-SNAPSHOT</version>
|
||||
<name>Coder Dojo Test</name>
|
||||
<description>Test project written to learn how to do Minecraft plug-in for Coder Dojo.</description>
|
||||
|
||||
|
@ -27,8 +27,20 @@ public final class CoderDojoEVV extends JavaPlugin implements Listener {
|
||||
|
||||
getLogger().info(player.getName() + " issued command with label " + label + ".");
|
||||
|
||||
if (label.equals("heal")) {
|
||||
switch (label) {
|
||||
case "heal":
|
||||
new Heal(this, player);
|
||||
break;
|
||||
case "excavate":
|
||||
int size;
|
||||
try {
|
||||
size = Integer.parseInt(args[0]);
|
||||
}
|
||||
catch (Exception e) {
|
||||
getLogger().info("Failed to convert argument to size, defaulting to 8.");
|
||||
size = 8;
|
||||
}
|
||||
new Excavate(this, player, size);
|
||||
}
|
||||
|
||||
getLogger().info("Finished onCommand().");
|
||||
|
@ -0,0 +1,69 @@
|
||||
package com.hyperling.minecraft.coderdojoevv;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
// Remove all blocks around the player by the size they pass through
|
||||
public class Excavate {
|
||||
public Excavate(JavaPlugin plugin, Player player, int numBlocks) {
|
||||
plugin.getLogger().info("Gathering all blocks with radius of " + numBlocks + " from " + player.getName() + ".");
|
||||
|
||||
Location l = player.getLocation();
|
||||
int x = l.getBlockX();
|
||||
int y = l.getBlockY();
|
||||
int z = l.getBlockZ();
|
||||
|
||||
World w = l.getWorld();
|
||||
|
||||
ArrayList<ItemStack> items = new ArrayList<ItemStack>();
|
||||
|
||||
// Loop through all the blocks in the specified area around the user
|
||||
for (int deltaX = x - numBlocks; deltaX < x + numBlocks; deltaX++) {
|
||||
for (int deltaY = y - numBlocks; deltaY < y + numBlocks; deltaY++) {
|
||||
for (int deltaZ = z - numBlocks; deltaZ < z + numBlocks; deltaZ++) {
|
||||
Block b = w.getBlockAt(deltaX, deltaY, deltaZ);
|
||||
plugin.getLogger().info("Found "+b.getType().name()+" at ("+deltaX+","+deltaY+","+deltaZ+").");
|
||||
|
||||
plugin.getLogger().info("Block is not bedrock: "+!b.getType().name().equals(Material.BEDROCK.name()));
|
||||
plugin.getLogger().info("Block is not air: "+!b.getType().name().equals(Material.AIR.name()));
|
||||
|
||||
// Ignore bedrock and air
|
||||
if (!b.getType().name().equals(Material.BEDROCK.name())
|
||||
&& !b.getType().name().equals(Material.AIR.name())) {
|
||||
plugin.getLogger().info("Adding "+b.getType().name()+" to array.");
|
||||
|
||||
// Add 1 of the block to the array for adding to the user's inventory
|
||||
ItemStack i = new ItemStack(b.getType());
|
||||
for (ItemStack item : items) {
|
||||
if (item.getType().name().equals(i.getType().name())) {
|
||||
i.setAmount(item.getAmount() + 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
items.add(i);
|
||||
plugin.getLogger().info("Added a "+b.getType().name()+", quantity is "+i.getAmount()+".");
|
||||
|
||||
// Remove the block
|
||||
b.setType(Material.AIR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Put the items in the player's inventory
|
||||
final PlayerInventory pi = player.getInventory();
|
||||
for (ItemStack item : items) {
|
||||
plugin.getLogger().info("Adding "+item.getAmount()+" "+item.getType().name()+" to "+player.getName()+".");
|
||||
pi.addItem(item);
|
||||
}
|
||||
plugin.getLogger().info("Finished excavating.");
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package com.hyperling.minecraft.coderdojoevv;
|
||||
|
||||
// Shoot fireball (ghast rocket?) out of redstone torch if used as a weapon
|
||||
public class Fireball {
|
||||
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.hyperling.minecraft.coderdojoevv;
|
||||
|
||||
public class UFO {
|
||||
|
||||
}
|
@ -1,7 +1,9 @@
|
||||
name: CoderDojoEVV
|
||||
main: com.hyperling.minecraft.coderdojoevv.CoderDojoEVV
|
||||
version: 0.1.7
|
||||
version: 0.1.8
|
||||
|
||||
commands:
|
||||
heal:
|
||||
description: Heal hearts, food, and ends fire.
|
||||
excavate:
|
||||
description: Gather all items in X blocks and add them to inventory
|
@ -1,7 +1,9 @@
|
||||
name: CoderDojoEVV
|
||||
main: com.hyperling.minecraft.coderdojoevv.CoderDojoEVV
|
||||
version: 0.1.7
|
||||
version: 0.1.8
|
||||
|
||||
commands:
|
||||
heal:
|
||||
description: Heal hearts, food, and ends fire.
|
||||
excavate:
|
||||
description: Gather all items in X blocks and add them to inventory
|
@ -1,3 +1,6 @@
|
||||
/home/ling/Programs/eclipse-workspace/CoderDojoEVV/src/main/java/com/hyperling/minecraft/coderdojoevv/Fireball.java
|
||||
/home/ling/Programs/eclipse-workspace/CoderDojoEVV/src/main/java/com/hyperling/minecraft/coderdojoevv/UFO.java
|
||||
/home/ling/Programs/eclipse-workspace/CoderDojoEVV/src/main/java/com/hyperling/minecraft/coderdojoevv/DiamondItems.java
|
||||
/home/ling/Programs/eclipse-workspace/CoderDojoEVV/src/main/java/com/hyperling/minecraft/coderdojoevv/Excavate.java
|
||||
/home/ling/Programs/eclipse-workspace/CoderDojoEVV/src/main/java/com/hyperling/minecraft/coderdojoevv/Heal.java
|
||||
/home/ling/Programs/eclipse-workspace/CoderDojoEVV/src/main/java/com/hyperling/minecraft/coderdojoevv/CoderDojoEVV.java
|
||||
|
3
upload_jar.sh
Executable file
3
upload_jar.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
scp /home/ling/Programs/eclipse-workspace/CoderDojoEVV/target/*.jar mc@192.168.1.65:Programs/minecraft/craftbukkit/plugins
|
Reference in New Issue
Block a user