Nvm Found Dwarfcraft 1.08

Discussion in 'Plugin Development' started by Jessy1237, Sep 3, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    Jessy1237

    Ok so I've almost fixed dwarfcraft and i just can't fix these last few errors.

    Here is the first class BlockListener
    Show Spoiler

    public void onBlockDamage(BlockDamageEvent event) {
    if (event.isCancelled())
    return;
    // General information
    Player player = event.getPlayer();
    DCPlayer dCPlayer = plugin.getDataManager().find(player);
    HashMap<Integer, Skill> skills = dCPlayer.getSkills();

    // Effect Specific information
    ItemStack tool = player.getItemInHand();
    int toolId = -1;
    if (tool != null) {
    toolId = tool.getTypeId();
    }
    boolean correctTool = false;
    int materialId = event.getBlock().getTypeId();
    if (DwarfCraft.debugMessagesThreshold < -1)
    System.out
    .println("DC-1: damage level = " + event.getDamageLevel());
    if (event.getDamageLevel() != BlockDamageLevel.STARTED)
    return;
    for (Skill s : skills.values()) {
    for (Effect e : s.getEffects()) {
    if (e.getEffectType() == EffectType.DIGTIME
    && e.getInitiatorId() == materialId) {
    if (DwarfCraft.debugMessagesThreshold < 2)
    System.out.println("DC2: started instamine check");
    correctTool = false;
    for (int id : e.getTools())
    if (id == toolId)
    correctTool = true;
    if (correctTool || !e.getToolRequired()) {
    if (Util.randomAmount(e.getEffectAmount(dCPlayer)) == 0)
    return;
    if (DwarfCraft.debugMessagesThreshold < 3)
    System.out
    .println("DC3: Insta-mine occured. Block:"
    + materialId);
    BlockBreakEvent bbe = new BlockBreakEvent(event.getBlock(), player);
    plugin.getServer().getPluginManager().callEvent(bbe);
    }
    }
    }
    }
    // event.setDamageLevel(event.getDamageLevel() + effectAmount);
    // event.setCancelled(true);
    }


    Now for the Craft Listener; With this one i was think to replace it with PlayerInteractEvent but if i do that then getEntity & isPlayer can't be fixed.
    Show Spoiler

    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockInteractEvent;
    import org.bukkit.event.block.BlockListener;

    class DCCraftListener extends BlockListener {
    private final DwarfCraft plugin;

    protected DCCraftListener(DwarfCraft plugin) {
    this.plugin = plugin;
    }

    @Override
    public void onBlockInteract(BlockInteractEvent event) {
    if (event.getBlock().getType() == Material.WORKBENCH
    && event.isPlayer()) {
    // schedule a *syncronous* task
    plugin.getServer()
    .getScheduler()
    .scheduleSyncDelayedTask(
    plugin,
    new DCCraftSchedule(plugin, plugin.getDataManager()
    .find(((Player) (event.getEntity())))), 5);
    }
    }
    }


    Last But Least the CraftSchedule

    Show Spoiler

    package com.smartaleq.bukkit.dwarfcraft;

    import net.minecraft.server.CraftingManager;
    import net.minecraft.server.EntityPlayer;
    import net.minecraft.server.ItemStack;
    import org.bukkit.craftbukkit.entity.CraftPlayer;
    import net.minecraft.server.ContainerWorkbench;

    class DCCraftSchedule implements Runnable {
    private final DCPlayer dCPlayer;
    private final DwarfCraft plugin;
    private final EntityPlayer entityPlayer;
    private ContainerWorkbench workBench;

    protected DCCraftSchedule(DwarfCraft newPlugin, DCPlayer newDwarf) {
    this.dCPlayer = newDwarf;
    this.plugin = newPlugin;
    this.entityPlayer = ((CraftPlayer) (dCPlayer.getPlayer())).getHandle();
    }

    @Override
    public void run() {
    // in this task we need to check to see if they are still using a
    // craftbench. if so, continue the task.
    if (entityPlayer == null)
    return;
    if (entityPlayer.activeContainer == entityPlayer.defaultContainer)
    return;
    try {
    workBench = (ContainerWorkbench) (entityPlayer.activeContainer);
    } catch (Exception e) {
    return;
    }

    ItemStack outputStack = CraftingManager.a().a(workBench);
    if (outputStack != null) {
    int materialId = outputStack.id;
    int damage = outputStack.damage;
    for (Skill s : dCPlayer.getSkills().values()) {
    for (Effect e : s.getEffects()) {
    if (e.getEffectType() == EffectType.CRAFT
    && materialId == e.getOutputId() && damage == e.getInitiatorId()) {
    outputStack.count = (int) e.getEffectAmount(dCPlayer);
    // TODO: need code to check max stack size and if amount
    // created > max stack size drop all count above 1 to
    // ground/inventory.
    // I'm not sure what the server ItemStack method is for
    // is.getMaxStackSize()
    }
    }
    workBench.b.a(0, outputStack); // set the output stack on the
    // crafting bench
    }
    }
    plugin.getServer()
    .getScheduler()
    .scheduleSyncDelayedTask(plugin,
    new DCCraftSchedule(plugin, dCPlayer), 2);
    }
    }


    I hope i get help soon because i really love this plugin and i want it for my server, I may even bring it back to Life.
     
  2. Offline

    HeitMachine92

    I don't know shit about programming, Jessy (as you may have gathered from our conversations...), but I would be more than willing to learn as much of it as I can just to bring back DwarfCraft. That plugin is amazing, thanks to the things it does to the game: What other plugin stresses specialization so heavily? If everything gets going well... Hell, we might get a server up and running, or try to get it implemented into Ark's server if we have enough support.
    Let me know if you want help.
    -HeitMachine92
    (p.s. You Incampment gents oughta stop back in every once in a while...)
     
Thread Status:
Not open for further replies.

Share This Page