Skip to content

Commit

Permalink
fix #79
Browse files Browse the repository at this point in the history
  • Loading branch information
MoriyaShiine committed Jan 25, 2024
1 parent ec61b4d commit c906415
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import moriyashiine.enchancement.common.packet.*;
import moriyashiine.enchancement.common.reloadlisteners.BeheadingReloadListener;
import moriyashiine.enchancement.common.reloadlisteners.EnchantingMaterialReloadListener;
import moriyashiine.enchancement.common.reloadlisteners.ExtractingBaseBlockReloadListener;
import moriyashiine.enchancement.common.util.EnchancementUtil;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityCombatEvents;
Expand Down Expand Up @@ -54,6 +55,7 @@ public void onInitialize() {
ModScreenHandlerTypes.init();
ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(new EnchantingMaterialReloadListener());
ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(new BeheadingReloadListener());
ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(new ExtractingBaseBlockReloadListener());
initEvents();
isApoliLoaded = FabricLoader.getInstance().isModLoaded("apoli");
for (String mod : new String[]{"enchdesc", "enchantedtooltips", "idwtialsimmoedm"}) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,13 @@
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;

public class ExtractingEvent implements PlayerBlockBreakEvents.Before {
public static Map<Block, Block> BASE_BLOCK_MAP = new HashMap<>();

@Override
public boolean beforeBlockBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, BlockEntity blockEntity) {
if (!player.isSneaking()) {
Expand Down Expand Up @@ -87,6 +86,10 @@ private static Set<BlockPos> gatherOres(Set<BlockPos> ores, World world, BlockPo
}

private static Block getBaseBlock(BlockState state) {
Block baseBlock = BASE_BLOCK_MAP.get(state.getBlock());
if (baseBlock != null) {
return baseBlock;
}
if (state.isIn(ModTags.Blocks.NETHER_ORES)) {
return Blocks.NETHERRACK;
} else if (state.isIn(ModTags.Blocks.END_ORES)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* All Rights Reserved (c) MoriyaShiine
*/

package moriyashiine.enchancement.common.reloadlisteners;

import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;
import moriyashiine.enchancement.common.Enchancement;
import moriyashiine.enchancement.common.event.ExtractingEvent;
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.registry.Registries;
import net.minecraft.resource.Resource;
import net.minecraft.resource.ResourceManager;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;

import java.io.InputStream;
import java.io.InputStreamReader;

public class ExtractingBaseBlockReloadListener implements SimpleSynchronousResourceReloadListener {
private static final Identifier ID = Enchancement.id("extracting_base_block");

@Override
public Identifier getFabricId() {
return ID;
}

@Override
public void reload(ResourceManager manager) {
ExtractingEvent.BASE_BLOCK_MAP.clear();
manager.findAllResources("extracting_base_block", path -> path.getNamespace().equals(Enchancement.MOD_ID) && path.getPath().endsWith(".json")).forEach((identifier, resources) -> {
for (Resource resource : resources) {
try (InputStream stream = resource.getInputStream()) {
JsonObject object = JsonParser.parseReader(new JsonReader(new InputStreamReader(stream))).getAsJsonObject();
Identifier blockId = new Identifier(identifier.getPath().substring(identifier.getPath().indexOf("/") + 1, identifier.getPath().length() - 5).replace("/", ":"));
Block block = Registries.BLOCK.get(blockId);
String base;
try {
base = JsonHelper.getString(object, "base");
} catch (JsonParseException exception) {
Enchancement.LOGGER.error(exception.getLocalizedMessage() + " in file '" + identifier + "'");
continue;
}
Identifier baseBlockId = new Identifier(base);
Block baseBlock = Registries.BLOCK.get(baseBlockId);
if (baseBlock == Blocks.AIR) {
Enchancement.LOGGER.error("Unknown block '{}' in file '{}'", baseBlockId, identifier);
continue;
}
ExtractingEvent.BASE_BLOCK_MAP.put(block, baseBlock);
} catch (Exception ignored) {
}
}
});
}
}

0 comments on commit c906415

Please sign in to comment.