Python-Plugin-Loader icon indicating copy to clipboard operation
Python-Plugin-Loader copied to clipboard

saveDefaultConfig raises a "zip file closed" error.

Open gdude2002 opened this issue 12 years ago • 1 comments

Here's my traceback..

16:47:17 [INFO] [PythonLoader] Enabling PythonLoader v0.3.4
16:47:17 [INFO] saveDefaultConfig
16:47:17 [SEVERE] Error occurred while enabling ArchUtilities v0.1 (Is it up to date?): zip file closed
java.lang.IllegalStateException: zip file closed
        at java.util.zip.ZipFile.ensureOpen(Unknown Source)
        at java.util.zip.ZipFile.getEntry(Unknown Source)
        at net.lahwran.bukkit.jython.PluginPythonZip.getStream(PluginPythonZip.java:43)
        at net.lahwran.bukkit.jython.PythonPlugin.getResource(PythonPlugin.java:331)
        at net.lahwran.bukkit.jython.PythonPlugin.saveResource(PythonPlugin.java:346)
        at net.lahwran.bukkit.jython.PythonPlugin.saveDefaultConfig(PythonPlugin.java:397)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:186)
        at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:204)
        at org.python.core.PyObject.__call__(PyObject.java:403)
        at org.python.core.PyObject.__call__(PyObject.java:407)
        at org.python.core.PyMethod.__call__(PyMethod.java:121)
        at org.python.pycode._pyx5.onEnable$2(<iostream>:39)
        at org.python.pycode._pyx5.call_function(<iostream>)
        at org.python.core.PyTableCode.call(PyTableCode.java:165)
        at org.python.core.PyBaseCode.call(PyBaseCode.java:301)
        at org.python.core.PyBaseCode.call(PyBaseCode.java:194)
        at org.python.core.PyFunction.__call__(PyFunction.java:417)
        at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:232)
        at org.python.core.PyMethod.__call__(PyMethod.java:223)
        at org.python.core.PyMethod.__call__(PyMethod.java:213)
        at org.python.core.PyMethod.__call__(PyMethod.java:208)
        at org.python.core.PyObject._jcallexc(PyObject.java:3555)
        at org.python.core.PyObject._jcall(PyObject.java:3587)
        at org.python.proxies.__main__$UtilsPlugin$0.onEnable(Unknown Source)
        at net.lahwran.bukkit.jython.PythonPlugin.setEnabled(PythonPlugin.java:163)
        at org.python.proxies.__main__$UtilsPlugin$0.setEnabled(Unknown Source)
        at net.lahwran.bukkit.jython.PythonPluginLoader.enablePlugin(PythonPluginLoader.java:388)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:284)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:266)
        at net.minecraft.server.v1_6_R3.MinecraftServer.l(MinecraftServer.java:315)
        at net.minecraft.server.v1_6_R3.MinecraftServer.f(MinecraftServer.java:292)
        at net.minecraft.server.v1_6_R3.MinecraftServer.a(MinecraftServer.java:252)
        at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.java:152)
        at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:393)
        at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)

Here's my code..

# coding=utf-8
__author__ = "Gareth Coles"

import org.bukkit as bukkit
from java.util.logging import Level
from java.util.logging import Logger

log = Logger.getLogger("Utils")


class UtilsPlugin(PythonPlugin):

    perms = None
    irc = None

    sign_change_listener = None
    command_listener = None
    command_executor = None

    db = None
    server_name = None

    def onEnable(self):
        print "saveDefaultConfig"
        self.saveDefaultConfig()
        print "getConfig"
        config = self.getConfig()
        print "getString"
        self.server_name = config.getString("server")

        if self.server_name == "server":
            print "Default server name"
            log.severe("Server name hasn't been set in the config. "
                       "Fix this and try again.")
            print "disablePlugin"
            self.getServer().getPluginManager().disablePlugin(self)
        else:
            print "Enabled"
            log.info("Enabled, I hope.")

    def onDisable(self):
        pass

..my file structure..

Screenshot

..and my plugin.yml..

name: ArchUtilities
main: UtilsPlugin
version: 0.1

Any ideas on this?

EDIT: Using CraftBukkit version git-Bukkit-1.6.4-R2.0-b2918jnks (MC: 1.6.4) (Implementing API version 1.6.4-R2.0) and this version of the plugin.

gdude2002 avatar Jan 05 '14 16:01 gdude2002

I attempted to fix this myself, however I haven't submitted a pull request as I feel like there's probably a better way to do this.

https://github.com/gdude2002/Python-Plugin-Loader/commit/7e937fe10917a11cc11478ac8a5afd7e5c3f6dac

gdude2002 avatar Jan 05 '14 18:01 gdude2002