I Wanted to create a oxidation function for my own items. But i get Errors when I start minecraft.
Here the code for the oxidation:
package de.stynxyxy.armorplus.oxidationevents;
import de.stynxyxy.armorplus.item.copperlightoxidated;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.Enchantment;
import de.stynxyxy.armorplus.item.kupferarmorItem;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import de.stynxyxy.armorplus.init.moditems;
import org.apache.commons.lang3.ObjectUtils;
import java.util.HashMap;
import java.util.Map;
@Mod.EventBusSubscriber
public class oxidation {
private static final int TRANSFORM_DELAY = 100; // Number of ticks after which the item should transform
private static final Map<ItemStack, Integer> transformCounts = new HashMap<>();
private static final Map<Item, Item> TRANSFORM_MAP = new HashMap<>();
static {
//TRANSFORM_MAP.put(moditems.copper_boots.get(),moditems.exposed_copper_boots.get());
}
@SubscribeEvent
public static void onServerTick(TickEvent.ServerTickEvent event) {
if (event.phase == TickEvent.Phase.END && event.side.isServer()) {
for (ServerPlayer player : event.getServer().getPlayerList().getPlayers()) {
Inventory inventory = player.getInventory();
for (int i = 0; i < inventory.getContainerSize(); i++) {
ItemStack itemStack = inventory.getItem(i);
if (shouldTransform(itemStack)) {
int tickCount = transformCounts.getOrDefault(itemStack, 0);
if (tickCount >= TRANSFORM_DELAY) {
Item targetItem = TRANSFORM_MAP.get(itemStack.getItem());
if (targetItem != null) {
ItemStack newItemStack = new ItemStack(targetItem, itemStack.getCount());
// Transfer enchantments to the new item
Map<Enchantment, Integer> enchantments = itemStack.getAllEnchantments();
for (Map.Entry<Enchantment, Integer> entry : enchantments.entrySet()) {
Enchantment enchantment = entry.getKey();
int level = entry.getValue();
newItemStack.enchant(enchantment, level);
}
// Set the name of the new item
newItemStack.setHoverName(itemStack.getHoverName());
inventory.setItem(i, newItemStack);
transformCounts.remove(itemStack);
}
} else {
transformCounts.put(itemStack, tickCount + 1);
}
}
}
}
}
}
private static boolean shouldTransform(ItemStack itemStack) {
return TRANSFORM_MAP.containsKey(itemStack.getItem());
}
}
Thank you (;