Skip to content

Commit

Permalink
fix(api): fix NoSuchMethod when addon createBlock
Browse files Browse the repository at this point in the history
  • Loading branch information
StarWishsama committed Dec 23, 2024
1 parent bc29e05 commit 5786ad6
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -1310,7 +1304,7 @@ private void migrateUniversalData(
return;
}

var universalData = createUniversalBlockData(l, sfId);
var universalData = createUniversalBlock(l, sfId);

Slimefun.runSync(
() -> Slimefun.getBlockDataService()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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));
Expand Down

0 comments on commit 5786ad6

Please sign in to comment.