Fix auto-add solid blocks for Magma

This commit is contained in:
ThisTestUser
2024-09-18 21:38:30 -04:00
parent 8ef9535fb0
commit 1ce2c0bad1

View File

@@ -22,7 +22,6 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.nuggetmc.tplus.api.agent.legacyagent.LegacyAgent; import net.nuggetmc.tplus.api.agent.legacyagent.LegacyAgent;
import net.nuggetmc.tplus.api.agent.legacyagent.LegacyMats; import net.nuggetmc.tplus.api.agent.legacyagent.LegacyMats;
import net.nuggetmc.tplus.api.utils.ChatUtils; import net.nuggetmc.tplus.api.utils.ChatUtils;
@@ -117,19 +116,19 @@ public class BotEnvironmentCommand extends CommandInstance {
byName.setAccessible(true); byName.setAccessible(true);
Map<String, Material> map = (Map<String, Material>) byName.get(null); Map<String, Material> map = (Map<String, Material>) byName.get(null);
Map<Material, Block> materialsToBlocks = new HashMap<>(); Map<Material, Block> materialsToBlocks = new HashMap<>();
if (!includeNonSolid) { if (!includeNonSolid) {
// Build material -> block map using ForgeRegistries // Build material -> block map using ForgeRegistries
Object blocksRegistry = Class.forName("net.minecraftforge.registries.ForgeRegistries").getDeclaredField("BLOCKS").get(null); Object blocksRegistry = Class.forName("net.minecraftforge.registries.ForgeRegistries").getDeclaredField("BLOCKS").get(null);
Set<Entry<ResourceKey<Block>, Block>> blockSet = (Set<Entry<ResourceKey<Block>, Block>>) Class.forName("net.minecraftforge.registries.IForgeRegistry").getMethod("getEntries").invoke(blocksRegistry); Set<Entry<ResourceKey<Block>, Block>> blockSet = (Set<Entry<ResourceKey<Block>, Block>>) Class.forName("net.minecraftforge.registries.IForgeRegistry").getMethod("getEntries").invoke(blocksRegistry);
for (Entry<ResourceKey<Block>, Block> entry : blockSet) { for (Entry<ResourceKey<Block>, Block> entry : blockSet) {
String result = (String) Class.forName("org.magmafoundation.magma.util.ResourceLocationUtil").getMethod("standardize", ResourceLocation.class).invoke(null, entry.getKey().location()); String result = (String) Class.forName("org.magmafoundation.magma.util.ResourceLocationUtil").getMethod("standardize", ResourceLocation.class).invoke(null, entry.getKey().location());
Material material = Material.getMaterial(result); Material material = Material.getMaterial(result);
if (material != null) if (material != null)
materialsToBlocks.put(material, entry.getValue()); materialsToBlocks.put(material, entry.getValue());
} }
} }
int added = 0; int added = 0;
for (Entry<String, Material> entry : map.entrySet()) { for (Entry<String, Material> entry : map.entrySet()) {
boolean valid = entry.getValue().isBlock() && entry.getKey().startsWith(prefix); boolean valid = entry.getValue().isBlock() && entry.getKey().startsWith(prefix);
if (valid && !includeNonSolid) if (valid && !includeNonSolid)
@@ -139,7 +138,7 @@ public class BotEnvironmentCommand extends CommandInstance {
} else { } else {
// Check if block is solid // Check if block is solid
Block block = materialsToBlocks.get(entry.getValue()); Block block = materialsToBlocks.get(entry.getValue());
valid = false; //TODO: BROKEN valid = block.defaultBlockState().blocksMotion();
} }
if (valid && LegacyMats.SOLID_MATERIALS.add(entry.getValue())) if (valid && LegacyMats.SOLID_MATERIALS.add(entry.getValue()))
added++; added++;