diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java index a1ddfc129e..894d7269eb 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java @@ -222,33 +222,27 @@ public void setDelayedSavingEnable(boolean isEnable) { * * @param l Slimefun 方块位置 {@link Location} * @param sfId Slimefun 物品 ID {@link SlimefunItem#getId()} - * @return 方块数据, 由于 {@link SlimefunItem} 的不同会返回两种数据中的一种 - * {@link SlimefunBlockData} - * {@link SlimefunUniversalData} + * @return 方块数据, {@link SlimefunBlockData} */ @Nonnull - public ASlimefunDataContainer createBlock(Location l, String sfId) { + public SlimefunBlockData createBlock(Location l, String sfId) { checkDestroy(); var sfItem = SlimefunItem.getById(sfId); if (sfItem instanceof UniversalBlock) { - var re = createUniversalBlockData(l, sfId); - if (Slimefun.getRegistry().getTickerBlocks().contains(sfId)) { - Slimefun.getTickerTask().enableTicker(l, re.getUUID()); - } - return re; - } else { - var re = getChunkDataCache(l.getChunk(), true).createBlockData(l, sfId); - if (Slimefun.getRegistry().getTickerBlocks().contains(sfId)) { - Slimefun.getTickerTask().enableTicker(l); - } - return re; + throw new IllegalArgumentException("Cannot create normal block data on UniversalBlock!"); } + + var re = getChunkDataCache(l.getChunk(), true).createBlockData(l, sfId); + if (Slimefun.getRegistry().getTickerBlocks().contains(sfId)) { + Slimefun.getTickerTask().enableTicker(l); + } + return re; } @Nonnull @ParametersAreNonnullByDefault - public SlimefunUniversalBlockData createUniversalBlockData(Location l, String sfId) { + public SlimefunUniversalBlockData createUniversalBlock(Location l, String sfId) { checkDestroy(); var uuid = UUID.randomUUID(); @@ -1310,7 +1304,7 @@ private void migrateUniversalData( return; } - var universalData = createUniversalBlockData(l, sfId); + var universalData = createUniversalBlock(l, sfId); Slimefun.runSync( () -> Slimefun.getBlockDataService() diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/migrator/BlockStorageMigrator.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/migrator/BlockStorageMigrator.java index 79f19083e5..aa3f5fc280 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/migrator/BlockStorageMigrator.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/migrator/BlockStorageMigrator.java @@ -2,8 +2,6 @@ import com.google.common.reflect.TypeToken; import com.google.gson.Gson; -import com.xzavier0722.mc.plugin.slimefun4.storage.controller.SlimefunBlockData; -import com.xzavier0722.mc.plugin.slimefun4.storage.controller.SlimefunUniversalData; import io.github.bakedlibs.dough.config.Config; import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; @@ -147,13 +145,7 @@ private void migrateBlock(World world, String sfId, String locStr, String jsonSt sfData.setData(key, each.getValue()); } - DirtyChestMenu menu = null; - - if (sfData instanceof SlimefunBlockData blockData) { - menu = blockData.getBlockMenu(); - } else if (sfData instanceof SlimefunUniversalData uniData) { - menu = uniData.getMenu(); - } + DirtyChestMenu menu = sfData.getBlockMenu(); if (menu != null) { var f = new File(invFolder, world.getName() + ";" + x + ";" + y + ";" + z + ".sfi"); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java index a44e0a3aef..ebe51d218e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java @@ -2,7 +2,7 @@ import com.xzavier0722.mc.plugin.slimefun4.storage.callback.IAsyncReadCallback; import com.xzavier0722.mc.plugin.slimefun4.storage.controller.SlimefunBlockData; -import com.xzavier0722.mc.plugin.slimefun4.storage.controller.SlimefunUniversalBlockData; +import com.xzavier0722.mc.plugin.slimefun4.storage.controller.attributes.UniversalBlock; import com.xzavier0722.mc.plugin.slimefun4.storage.util.StorageCacheUtils; import io.github.bakedlibs.dough.protection.Interaction; import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; @@ -154,17 +154,18 @@ public void onBlockPlace(BlockPlaceEvent e) { Slimefun.getBlockDataService().setBlockData(block, sfItem.getId()); } - var data = Slimefun.getDatabaseManager() - .getBlockDataController() - .createBlock(block.getLocation(), sfItem.getId()); + if (sfItem instanceof UniversalBlock) { + var data = Slimefun.getDatabaseManager() + .getBlockDataController() + .createUniversalBlock(block.getLocation(), sfItem.getId()); - if (data instanceof SlimefunUniversalBlockData) { if (Slimefun.getBlockDataService().isTileEntity(block.getType())) { Slimefun.getBlockDataService().updateUniversalDataUUID(block, data.getKey()); - } else { - throw new IllegalStateException( - "You must use pdc support material for this Slimefun item!"); } + } else { + Slimefun.getDatabaseManager() + .getBlockDataController() + .createBlock(block.getLocation(), sfItem.getId()); } sfItem.callItemHandler(BlockPlaceHandler.class, handler -> handler.onPlayerPlace(e));