Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.fouristhenumber.utilitiesinexcess.client.IMCForNEI;
import com.fouristhenumber.utilitiesinexcess.common.items.tools.ItemDestructionPickaxe;
import com.fouristhenumber.utilitiesinexcess.common.items.tools.ItemReversingHoe;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.FMPCompat;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.FMPItems;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.multipart.Content;
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
Expand Down Expand Up @@ -56,6 +57,7 @@ public void preInit(FMLPreInitializationEvent event) {
}
if (Mods.ForgeMicroBlock.isLoaded()) {
FMPItems.init();
FMPCompat.init();
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
package com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart;

import com.fouristhenumber.utilitiesinexcess.ModBlocks;
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.config.OtherConfig;

import codechicken.microblock.BlockMicroMaterial;
import codechicken.microblock.MicroMaterialRegistry;
import cpw.mods.fml.common.registry.GameRegistry;

public class FMPCompat {

public static void init() {
registerMicroblock(ModBlocks.SMART_PUMP);
registerMicroblock(ModBlocks.TRADING_POST);
registerMicroblock(ModBlocks.COMPRESSED_COBBLESTONE, 0, 7);
registerMicroblock(ModBlocks.COMPRESSED_DIRT, 0, 7);
registerMicroblock(ModBlocks.DECORATIVE_BLOCKS, 0, 11);
registerMicroblock(ModBlocks.COMPRESSED_GRAVEL, 0, 7);
registerMicroblock(ModBlocks.COMPRESSED_SAND, 0, 7);
registerMicroblock(ModBlocks.COLORED_STONE_BRICKS, 0, 15);
registerMicroblock(ModBlocks.COLORED_WOOD_PLANKS, 0, 15);
registerMicroblock(ModBlocks.COLORED_GLOWSTONE, 0, 15);
registerMicroblock(ModBlocks.COLORED_STONE, 0, 15);
registerMicroblock(ModBlocks.COLORED_QUARTZ_BLOCK, 0, 15);
registerMicroblock(ModBlocks.COLORED_SOUL_SAND, 0, 15);
registerMicroblock(ModBlocks.COLORED_REDSTONE_LAMP, 0, 15);
registerMicroblock(ModBlocks.COLORED_BRICKS, 0, 15);
registerMicroblock(ModBlocks.COLORED_COBBLESTONE, 0, 15);
registerMicroblock(ModBlocks.COLORED_LAPIS_BLOCK, 0, 15);
registerMicroblock(ModBlocks.COLORED_OBSIDIAN, 0, 15);
registerMicroblock(ModBlocks.COLORED_REDSTONE_BLOCK, 0, 15);
registerMicroblock(ModBlocks.COLORED_COAL_BLOCK, 0, 15);
registerMicroblock(ModBlocks.DECORATIVE_GLASS, 0, 12);
registerMicroblock(ModBlocks.ENDSPARK);
registerMicroblock(ModBlocks.INVERTED_BLOCK);
registerMicroblock(ModBlocks.BEDROCKIUM_BLOCK);
registerMicroblock(ModBlocks.MAGIC_WOOD);
registerMicroblock(ModBlocks.ETHEREAL_GLASS, 0, 5);
registerMicroblock(ModBlocks.LAPIS_AETHERIUS, 0, 15);

if (Mods.ExtraUtilities.isLoaded() || !OtherConfig.enableWorldConversion) return;

registerRemap("ExtraUtilities:enderThermicPump", ModBlocks.SMART_PUMP);
registerRemap("ExtraUtilities:trading_post", ModBlocks.TRADING_POST);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_COBBLESTONE, 7);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_DIRT, 8, 0);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_DIRT, 9, 1);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_DIRT, 10, 2);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_DIRT, 11, 3);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_GRAVEL, 12, 0);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_GRAVEL, 13, 1);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_SAND, 14, 0);
registerRemap("tile.extrautils:cobblestone_compressed", ModBlocks.COMPRESSED_SAND, 15, 1);
registerRemap("tile.extrautils:colorStoneBrick", ModBlocks.COLORED_STONE_BRICKS, 15);
registerRemap("tile.extrautils:colorWoodPlanks", ModBlocks.COLORED_WOOD_PLANKS, 15);
registerRemap("tile.extrautils:color_lightgem", ModBlocks.COLORED_GLOWSTONE, 15);
registerRemap("tile.extrautils:color_stone", ModBlocks.COLORED_STONE, 15);
registerRemap("tile.extrautils:color_quartzBlock", ModBlocks.COLORED_QUARTZ_BLOCK, 15);
registerRemap("tile.extrautils:color_hellsand", ModBlocks.COLORED_SOUL_SAND, 15);
registerRemap("tile.extrautils:color_redstoneLight", ModBlocks.COLORED_REDSTONE_LAMP, 15);
registerRemap("tile.extrautils:color_brick", ModBlocks.COLORED_BRICKS, 15);
registerRemap("tile.extrautils:color_stonebrick", ModBlocks.COLORED_COBBLESTONE, 15);
registerRemap("tile.extrautils:color_blockLapis", ModBlocks.COLORED_LAPIS_BLOCK, 15);
registerRemap("tile.extrautils:color_obsidian", ModBlocks.COLORED_OBSIDIAN, 15);
registerRemap("tile.extrautils:color_blockRedstone", ModBlocks.COLORED_REDSTONE_BLOCK, 15);
registerRemap("tile.extrautils:color_blockCoal", ModBlocks.COLORED_COAL_BLOCK, 15);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 0, 7);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 1, 5);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 2, 2);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 3, 4);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 4, 8);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 6, 6);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 7, 9);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 9, 3);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 10, 10);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 12, 0);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 13, 1);
registerRemap("tile.extrautils:decorativeBlock1", ModBlocks.DECORATIVE_BLOCKS, 14, 11);
registerRemap("tile.extrautils:decorativeBlock2", ModBlocks.DECORATIVE_GLASS, 11);
registerRemap("tile.extrautils:decorativeBlock1_11", ModBlocks.ENDSPARK);
registerRemap("tile.extrautils:decorativeBlock1_5", ModBlocks.INVERTED_BLOCK);
registerRemap("tile.extrautils:block_bedrockium", ModBlocks.BEDROCKIUM_BLOCK);
registerRemap("tile.extrautils:decorativeBlock1_8", ModBlocks.MAGIC_WOOD);
registerRemap("tile.extrautils:etherealglass", ModBlocks.ETHEREAL_GLASS, 5);
registerRemap("tile.extrautils:greenscreen", ModBlocks.LAPIS_AETHERIUS, 15);
}

private static void registerMicroblock(ModBlocks block, int meta) {
String blockName = GameRegistry.findUniqueIdentifierFor(block.get())
.toString();
if (block.isEnabled()) {
MicroMaterialRegistry
.registerMaterial(new BlockMicroMaterial(block.get(), meta), applyMeta(blockName, meta));
}
}

private static void registerMicroblock(ModBlocks block) {
registerMicroblock(block, 0);
}

private static void registerMicroblock(ModBlocks block, int min, int max) {
for (int m = min; m <= max; m++) {
registerMicroblock(block, m);
}
}

private static void registerRemap(String exuName, ModBlocks uieBlock) {
MicroMaterialRegistry.remapName(
exuName,
GameRegistry.findUniqueIdentifierFor(uieBlock.get())
.toString());
}

private static void registerRemap(String exuName, ModBlocks uieBlock, int max) {
String blockName = GameRegistry.findUniqueIdentifierFor(uieBlock.get())
.toString();
for (int m = 0; m <= max; m++) {
MicroMaterialRegistry.remapName(applyMeta(exuName, m), applyMeta(blockName, m));
}
}

private static void registerRemap(String exuName, ModBlocks uieBlock, int exuMeta, int uieMeta) {
MicroMaterialRegistry.remapName(
applyMeta(exuName, exuMeta),
applyMeta(
GameRegistry.findUniqueIdentifierFor(uieBlock.get())
.toString(),
uieMeta));
}

private static String applyMeta(String name, int meta) {
if (meta == 0) return name;
return name + "_" + meta;
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.multipart;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import net.minecraft.nbt.NBTTagCompound;

import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.config.OtherConfig;

import codechicken.lib.data.MCDataInput;
import codechicken.microblock.MicroMaterialRegistry;
import codechicken.multipart.MultiPartRegistry;
Expand All @@ -20,13 +24,30 @@ public class Content implements MultiPartRegistry.IPartFactory2 {

public static final Set<String> sidedParts = new HashSet<>();

public static final Map<String, String> legacyAliases = new HashMap<>();

public void init() {
for (int i = 0; i < partNames.length; i++) {
partMap.put(partNames[i], i);
}
sidedParts.add(WallPart.name);
sidedParts.add(FencePart.name);
MultiPartRegistry.registerParts(this, partNames);

if (!Mods.ExtraUtilities.isLoaded() && OtherConfig.enableWorldConversion) {
legacyAliases.put("extrautils:sphere", SpherePart.name);
legacyAliases.put("extrautils:fence", FencePart.name);
legacyAliases.put("extrautils:wall", WallPart.name);
}

Set<String> namesToRegister = new HashSet<>();
namesToRegister.addAll(Arrays.asList(partNames));
namesToRegister.addAll(legacyAliases.keySet());

MultiPartRegistry.registerParts(this, namesToRegister.toArray(new String[0]));
}

private String translateName(String name) {
return legacyAliases.getOrDefault(name, name);
}

public UEMultipart createUEMultiPart(boolean isClient, int material, int side, String name) {
Expand All @@ -47,19 +68,23 @@ public UEMultipart createUEMultiPart(boolean isClient, int material, int side, S
// Called on the server
@Override
public TMultiPart createPart(String name, NBTTagCompound nbt) {
String actualName = translateName(name);

return createUEMultiPart(
false,
MicroMaterialRegistry.materialID(nbt.getString("material")),
nbt.getInteger("side"),
name);
actualName);
}

// Called on the client
@Override
public TMultiPart createPart(String name, MCDataInput packet) {
if (sidedParts.contains(name)) {
return createUEMultiPart(true, MicroMaterialRegistry.readMaterialID(packet), packet.readInt(), name);
String actualName = translateName(name);

if (sidedParts.contains(actualName)) {
return createUEMultiPart(true, MicroMaterialRegistry.readMaterialID(packet), packet.readInt(), actualName);
}
return createUEMultiPart(true, MicroMaterialRegistry.readMaterialID(packet), 0, name);
return createUEMultiPart(true, MicroMaterialRegistry.readMaterialID(packet), 0, actualName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fouristhenumber.utilitiesinexcess.ModBlocks;
import com.fouristhenumber.utilitiesinexcess.ModItems;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.DivisionSigilTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.ForgeMicroblockItemTransformer;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenBagTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenLassoTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.CollectorTransformation;
Expand Down Expand Up @@ -87,6 +88,8 @@ private static void transformItems() {
.addSimpleReplacement("ExtraUtilities:endConstructor", 2, ModBlocks.CONVERGENCE_CRYSTAL.getItem(), 0);
ItemStackReplacementManager
.addSimpleReplacement("ExtraUtilities:endConstructor", 3, ModBlocks.CONVERGENCE_CRYSTAL.getItem(), 0);
ItemStackReplacementManager
.addTransformationHandler("ExtraUtilities:microblocks", new ForgeMicroblockItemTransformer());
// Custom transformers
ItemStackReplacementManager
.addTransformationHandler("ExtraUtilities:divisionSigil", new DivisionSigilTransformation());
Expand Down Expand Up @@ -362,6 +365,7 @@ private static void ignoreMissingMappings() {
ItemStackReplacementManager.ignoreMissingMapping("ExtraUtilities:temporalHoe");
ItemStackReplacementManager.ignoreMissingMapping("ExtraUtilities:unstableingot");
ItemStackReplacementManager.ignoreMissingMapping("ExtraUtilities:watering_can");
ItemStackReplacementManager.ignoreMissingMapping("ExtraUtilities:microblocks");
// Blocks
BlockReplacementManager.ignoreMissingMapping("ExtraUtilities:angelBlock");
BlockReplacementManager.ignoreMissingMapping("ExtraUtilities:block_bedrockium");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items;

import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound;

import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.FMPItems;
import com.gtnewhorizons.postea.api.IDExtenderCompat;
import com.gtnewhorizons.postea.api.IItemStackTransformationHandler;

import codechicken.microblock.MicroMaterialRegistry;

public class ForgeMicroblockItemTransformer implements IItemStackTransformationHandler {

@Override
public boolean apply(String originalItemId, NBTTagCompound stack) {
// UiE's microblock metas are offset 1. The item/meta is always modified when this transformer runs. Therefore,
// we always return true.
IDExtenderCompat.setItemStackID(stack, Item.getIdFromItem(FMPItems.UE_MULTI_PART.get()));
stack.setInteger("Damage", stack.getInteger("Damage") - 1);

if (!stack.hasKey("tag")) return true;
NBTTagCompound tag = stack.getCompoundTag("tag");

if (!tag.hasKey("mat")) return true;
String matName = tag.getString("mat");

// Goes through the remap layer, which is private
int remappedId = MicroMaterialRegistry.materialID(matName);
String remappedName = MicroMaterialRegistry.materialName(remappedId);

if (remappedName.equals(matName)) return true;

tag.setString("mat", remappedName);
stack.setTag("tag", tag);
return true;
}
}