mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 12:25:46 +01:00
Fix PlotItem.
This commit is contained in:
parent
8f23299e7d
commit
e724aa8caf
@ -1,10 +1,28 @@
|
||||
package com.github.intellectualsites.plotsquared.bukkit.util;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
|
||||
import com.github.intellectualsites.plotsquared.plot.PlotSquared;
|
||||
import com.github.intellectualsites.plotsquared.plot.config.C;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.LegacyPlotBlock;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.RegionWrapper;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.StringPlotBlock;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.schematic.PlotItem;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.StringComparison;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import javax.annotation.Nullable;
|
||||
import lombok.NonNull;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
@ -19,10 +37,12 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.*;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.bukkit.material.Sandstone;
|
||||
import org.bukkit.material.Step;
|
||||
import org.bukkit.material.Tree;
|
||||
import org.bukkit.material.WoodenStep;
|
||||
import org.bukkit.material.Wool;
|
||||
|
||||
@SuppressWarnings({"unused", "WeakerAccess"}) public class BukkitUtil extends WorldUtil {
|
||||
|
||||
@ -359,6 +379,10 @@ import java.util.*;
|
||||
return list;
|
||||
}
|
||||
|
||||
public static BukkitLegacyMappings getBukkitLegacyMappings() {
|
||||
return (BukkitLegacyMappings) PlotSquared.imp().getLegacyMappings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItems(@NonNull final String worldName, @NonNull final PlotItem items) {
|
||||
final World world = getWorld(worldName);
|
||||
@ -370,8 +394,9 @@ import java.util.*;
|
||||
if (state instanceof InventoryHolder) {
|
||||
InventoryHolder holder = (InventoryHolder) state;
|
||||
Inventory inv = holder.getInventory();
|
||||
for (int i = 0; i < items.id.length; i++) {
|
||||
ItemStack item = new ItemStack(LegacyMappings.fromLegacyId(items.id[i]).getMaterial(), items.amount[i], items.data[i]);
|
||||
for (int i = 0; i < items.types.length; i++) {
|
||||
// ItemStack item = new ItemStack(LegacyMappings.fromLegacyId(items.id[i]).getMaterial(), items.amount[i], items.data[i]);
|
||||
ItemStack item = new ItemStack(items.types[i].to(Material.class), items.amount[i]);
|
||||
inv.addItem(item);
|
||||
}
|
||||
state.update(true);
|
||||
@ -385,7 +410,7 @@ import java.util.*;
|
||||
return Material.getMaterial(((StringPlotBlock) plotBlock).getItemId().toUpperCase(Locale.ENGLISH));
|
||||
} else {
|
||||
final LegacyPlotBlock legacyPlotBlock = (LegacyPlotBlock) plotBlock;
|
||||
return LegacyMappings.fromLegacyId(legacyPlotBlock.getId()).getMaterial();
|
||||
return getBukkitLegacyMappings().fromLegacyToString(legacyPlotBlock.getId(), legacyPlotBlock.getData()).to(Material.class);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ public abstract class PlotBlock implements ConfigurationSerializable {
|
||||
public static PlotBlock deserialize(@NonNull final Map<String, Object> map) {
|
||||
if (map.containsKey("material")) {
|
||||
final Object object = map.get("material");
|
||||
return get(object);
|
||||
return get(object.toString());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -52,6 +52,21 @@ public abstract class PlotBlock implements ConfigurationSerializable {
|
||||
return ImmutableMap.of("material", this.getRawId());
|
||||
}
|
||||
|
||||
public <T> T to(@NonNull final Class<T> clazz) {
|
||||
if (blockRegistry == null) {
|
||||
blockRegistry = PlotSquared.imp().getBlockRegistry();
|
||||
if (blockRegistry == null) {
|
||||
throw new UnsupportedOperationException("The PlotSquared implementation has not registered a custom block registry."
|
||||
+ " This method can't be used.");
|
||||
}
|
||||
conversionType = blockRegistry.getType();
|
||||
}
|
||||
if (!clazz.equals(conversionType)) {
|
||||
throw new UnsupportedOperationException("The PlotSquared implementation has not registered a block registry for this object type");
|
||||
}
|
||||
return clazz.cast(blockRegistry.getItem(this));
|
||||
}
|
||||
|
||||
public abstract boolean isAir();
|
||||
|
||||
public static StringPlotBlock get(@NonNull final String itemId) {
|
||||
|
@ -1,20 +1,22 @@
|
||||
package com.github.intellectualsites.plotsquared.plot.object.schematic;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
||||
|
||||
public class PlotItem {
|
||||
|
||||
public final int x;
|
||||
public final int y;
|
||||
public final int z;
|
||||
public final short[] id;
|
||||
public final byte[] data;
|
||||
// public final short[] id;
|
||||
// public final byte[] data;
|
||||
public final PlotBlock[] types;
|
||||
public final byte[] amount;
|
||||
|
||||
public PlotItem(short x, short y, short z, short[] id, byte[] data, byte[] amount) {
|
||||
public PlotItem(short x, short y, short z, PlotBlock[] types, byte[] amount) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
this.id = id;
|
||||
this.data = data;
|
||||
this.types = types;
|
||||
this.amount = amount;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user