Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9173625
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 17, 20262026-06-17T16:37:03+00:00 2026-06-17T16:37:03+00:00

Ok, for my Bukkit Plugin, I need the following java class (NewItem.java) to be

  • 0

Ok, for my Bukkit Plugin, I need the following java class (NewItem.java) to be serializable, but it is not. It gives me the error when my plugin tries to save it:


16:33:23 [SEVERE] java.io.NotSerializableException: org.bukkit.inventory.ItemSta
ck
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeObject0(Unknown Sourc
e)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeObject(Unknown Source
)
16:33:23 [SEVERE]       at java.util.ArrayList.writeObject(Unknown Source)
16:33:23 [SEVERE]       at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown
Source)
16:33:23 [SEVERE]       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unkno
wn Source)
16:33:23 [SEVERE]       at java.lang.reflect.Method.invoke(Unknown Source)
16:33:23 [SEVERE]       at java.io.ObjectStreamClass.invokeWriteObject(Unknown S
ource)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeSerialData(Unknown So
urce)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknow
n Source)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeObject0(Unknown Sourc
e)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeObject(Unknown Source
)
16:33:23 [SEVERE]       at java.util.HashMap.writeObject(Unknown Source)
16:33:23 [SEVERE]       at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown
Source)
16:33:23 [SEVERE]       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unkno
wn Source)
16:33:23 [SEVERE]       at java.lang.reflect.Method.invoke(Unknown Source)
16:33:23 [SEVERE]       at java.io.ObjectStreamClass.invokeWriteObject(Unknown S
ource)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeSerialData(Unknown So
urce)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknow
n Source)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeObject0(Unknown Sourc
e)
16:33:23 [SEVERE]       at java.io.ObjectOutputStream.writeObject(Unknown Source
)
16:33:23 [SEVERE]       at com.tommy3244.plugins.MakeYourOwnBlocks.SaveLoadAPI.s
ave(SaveLoadAPI.java:16)
16:33:23 [SEVERE]       at com.tommy3244.plugins.MakeYourOwnBlocks.MakeYourOwnBl
ocks.onDisable(MakeYourOwnBlocks.java:60)
16:33:23 [SEVERE]       at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlug
in.java:219)
16:33:23 [SEVERE]       at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin
(JavaPluginLoader.java:481)
16:33:23 [SEVERE]       at org.bukkit.plugin.SimplePluginManager.disablePlugin(S
implePluginManager.java:400)
16:33:23 [SEVERE]       at org.bukkit.plugin.SimplePluginManager.disablePlugins(
SimplePluginManager.java:393)
16:33:23 [SEVERE]       at org.bukkit.plugin.SimplePluginManager.clearPlugins(Si
mplePluginManager.java:434)
16:33:23 [SEVERE]       at org.bukkit.craftbukkit.v1_4_6.CraftServer.reload(Craf
tServer.java:563)
16:33:23 [SEVERE]       at org.bukkit.Bukkit.reload(Bukkit.java:184)
16:33:23 [SEVERE]       at org.bukkit.command.defaults.ReloadCommand.execute(Rel
oadCommand.java:23)
16:33:23 [SEVERE]       at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCo
mmandMap.java:186)
16:33:23 [SEVERE]       at org.bukkit.craftbukkit.v1_4_6.CraftServer.dispatchCom
mand(CraftServer.java:514)
16:33:23 [SEVERE]       at org.bukkit.craftbukkit.v1_4_6.CraftServer.dispatchSer
verCommand(CraftServer.java:506)
16:33:23 [SEVERE]       at net.minecraft.server.v1_4_6.DedicatedServer.al(Dedica
tedServer.java:260)
16:33:23 [SEVERE]       at net.minecraft.server.v1_4_6.DedicatedServer.r(Dedicat
edServer.java:225)
16:33:23 [SEVERE]       at net.minecraft.server.v1_4_6.MinecraftServer.q(Minecra
ftServer.java:494)
16:33:23 [SEVERE]       at net.minecraft.server.v1_4_6.MinecraftServer.run(Minec
raftServer.java:427)
16:33:23 [SEVERE]       at net.minecraft.server.v1_4_6.ThreadServerApplication.r
un(SourceFile:849)

The source code for the NewItem.java is here:


package com.tommy3244.plugins.MakeYourOwnBlocks;

import java.util.*;
import java.util.logging.Logger;
import java.io.Serializable;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;

public class NewItem implements Serializable
{
public int id;
public byte data;
public int damage;
public String name;
public List<String> lore;
public List<List<String>> commands;
public NewItem(List<String> lore, String name, int itemid, byte itemdata, List<List<String>> lines, int damage, boolean hasRecipe, ConfigurationSection section)
{
id = itemid;
data = itemdata;
this.name = name;
this.damage = damage;
this.lore = lore;
commands = lines;
ItemStack stack;
if(data != 0)
{
stack = new ItemStack(id, data);
}
else
{
stack = new ItemStack(id);
}
if(hasRecipe)
{
try
{
ShapedRecipe recipe = new ShapedRecipe(stack);
String r1 = section.getString("items."+name+".r1");
String r2 = section.getString("items."+name+".r2");
String r3 = section.getString("items."+name+".r3");
List<Integer> defines = section.getIntegerList("items."+name+".defines");
Character[] chars = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
List<Character> charlist = Arrays.asList(chars);
for(int defined : defines)
{
Material md = Material.getMaterial(defined);

recipe.setIngredient(charlist.get(0), md);
}
String[] rows = {r1, r2, r3};
recipe.shape(rows);
Bukkit.addRecipe(recipe);
}
catch(Exception error)
{

}
}
}
public NewItem(List<String> lore, String name, int itemid, List<List<String>> lines, int damage, boolean hasRecipe, ConfigurationSection section)
{
this(lore, name, itemid, (byte)0, lines, damage, hasRecipe, section);
}
public Logger getLogger()
{
return Bukkit.getServer().getPluginManager().getPlugin("MakeYourOwnBlocks").getLogger();
}
public int getItem()
{
return id;
}
public String getName()
{
return name;
}
public boolean onRightClick(Player p, boolean right, boolean block)
{
int isright;
int isblock;
if(right)
{
isright = 1;
}
else
{
isright = 0;
}
if(block)
{
isblock = 1;
}
else
{
isblock = 0;
}
try
{
List<String> cmds = commands.get(0);
for(String line : cmds)
{
line = line.replaceAll("\\<block\\>", String.valueOf(isblock));
line = line.replaceAll("\\<right\\>", String.valueOf(isright));
String[] segments = line.split(" ");
String cmd = segments[0];
List<String> rest = Arrays.asList(segments);
getLogger().info(String.valueOf(rest));
rest.remove(0);
StringBuilder sb = new StringBuilder();
for(String stst : rest)
{
sb.append(stst);
}
String reststr = sb.toString();
if(cmd.equalsIgnoreCase("cmd"))
{
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), reststr);
}
if(cmd.equalsIgnoreCase("setblock"))
{
Block b = p.getWorld().getBlockAt(Integer.parseInt(rest.get(0)), Integer.parseInt(rest.get(1)), Integer.parseInt(rest.get(2)));
b.setTypeId(Integer.parseInt(rest.get(3)));
if(rest.size() > 4)
{
b.setData((byte)Integer.parseInt(rest.get(5)));
}
}
if(cmd.equalsIgnoreCase("say"))
{
p.sendMessage(reststr);
}
if(cmd.equalsIgnoreCase("kill"))
{
p.setHealth(0);
}
if(cmd.equalsIgnoreCase("hurt"))
{
p.setHealth(p.getHealth()-Integer.parseInt(rest.get(0)));
}
}
}
catch(Exception error)
{
error.printStackTrace();
return false;
}
return true;
}
public boolean onLeftClick(Player p, boolean right, boolean block)
{
int isright;
int isblock;
if(right)
{
isright = 1;
}
else
{
isright = 0;
}
if(block)
{
isblock = 1;
}
else
{
isblock = 0;
}
try
{
List<String> cmds = commands.get(1);
for(String line : cmds)
{
line.replaceAll("\\<block\\>", String.valueOf(isblock));
line.replaceAll("\\<right\\>", String.valueOf(isright));
String[] segments = line.split(" ");
String cmd = segments[0];
List<String> rest = Arrays.asList(segments);
rest.remove(rest.get(0));
StringBuilder sb = new StringBuilder();
for(String stst : rest)
{
sb.append(stst);
}
String reststr = sb.toString();
if(cmd.equalsIgnoreCase("cmd"))
{
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), reststr);
}
if(cmd.equalsIgnoreCase("setblock"))
{
Block b = p.getWorld().getBlockAt(Integer.parseInt(rest.get(0)), Integer.parseInt(rest.get(1)), Integer.parseInt(rest.get(2)));
b.setTypeId(Integer.parseInt(rest.get(3)));
if(rest.size() > 4)
{
b.setData((byte)Integer.parseInt(rest.get(5)));
}
}
if(cmd.equalsIgnoreCase("say"))
{
p.sendMessage(reststr);
}
if(cmd.equalsIgnoreCase("kill"))
{
p.setHealth(0);
}
if(cmd.equalsIgnoreCase("hurt"))
{
p.setHealth(p.getHealth()-Integer.parseInt(rest.get(0)));
}
}
}
catch(Exception error)
{
return false;
}
return true;
}
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-17T16:37:03+00:00Added an answer on June 17, 2026 at 4:37 pm

    You need to implement java.io.Serializable:

    public class NewItem implements Serializable
    

    From JavaDoc:

    Serializability of a class is enabled by the class implementing the
    java.io.Serializable interface. Classes that do not implement this
    interface will not have any of their state serialized or deserialized.
    All subtypes of a serializable class are themselves serializable. The
    serialization interface has no methods or fields and serves only to
    identify the semantics of being serializable.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a Java-based Bukkit plugin (fairly irrelevant to the issue at hand but
The Java end is a Bukkit plugin, so I don't have the freedom to
I have been writing a Java program - Specifically a Bukkit plugin, although that
Hello im coding a plugin for the game minecraft using Bukkit. Basically when a
I am making a plugin for the game called Minecraft with Bukkit API .
It may sound a bit weird, but in Bukkit (Minecraft Server) there's a permissions
I've been working on a Bukkit plugin project for a while, and I've finally
I'm running into a pretty big bug on an SQL-based Bukkit plugin that uses
Ok, so I've been using Eclipse to work on making a Bukkit plugin for
So I have been trying to write a Bukkit plugin for a friend of

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.