Skip to content
Open
Show file tree
Hide file tree
Changes from 10 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
11 changes: 7 additions & 4 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,17 @@ dependencies {
compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.14.14-GTNH:dev')


api("com.github.GTNewHorizons:Postea:1.1.5:dev")

devOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.4-GTNH:dev")
devOnlyNonPublishable("io.github.legacymoddingmc:unimixins:0.1.23:dev")

runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.40-GTNH:dev")

// For testing NBT data (/nbtedit)
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:ServerUtilities:2.2.6:dev")
// Misc testing utilities
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:ServerUtilities:2.2.6:dev") // (/nbtedit)
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:worldedit-gtnh:v0.0.8:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.9.15:dev")
// For testing glove
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:Translocators:1.4.0:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:Backhand:1.8.2:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:Backhand:1.8.0:dev")
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.fouristhenumber.utilitiesinexcess.common.dimensions.endoftime.EndOfTimeEvents;
import com.fouristhenumber.utilitiesinexcess.common.dimensions.underworld.UnderWorldEvents;
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings;
import com.fouristhenumber.utilitiesinexcess.config.OtherConfig;
import com.fouristhenumber.utilitiesinexcess.network.PacketHandler;
import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks;
import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind;
Expand Down Expand Up @@ -35,14 +37,21 @@ public void preInit(FMLPreInitializationEvent event) {
if (Mods.NEI.isLoaded()) {
IMCForNEI.IMCSender();
}
if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded() && Mods.Postea.isLoaded()) {
Remappings.preInit();
}
}

public void init(FMLInitializationEvent event) {
soundVolumeChecks = new SoundVolumeChecks();
GLOVE_KEYBIND = SyncedKeybind.createConfigurable("key.uie.glove", "key.categories.uie", Keyboard.KEY_NONE);
}

public void postInit(FMLPostInitializationEvent event) {}
public void postInit(FMLPostInitializationEvent event) {
if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded() && Mods.Postea.isLoaded()) {
Remappings.postInit();
}
}

public void serverStarting(FMLServerStartingEvent event) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
import com.fouristhenumber.utilitiesinexcess.common.worldgen.WorldGenEnderLotus;
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.compat.crafttweaker.QEDCraftTweakerSupport;
import com.fouristhenumber.utilitiesinexcess.compat.exu.ExuCompat;
import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings;
import com.fouristhenumber.utilitiesinexcess.compat.tinkers.TinkersCompat;
import com.fouristhenumber.utilitiesinexcess.config.OtherConfig;
import com.fouristhenumber.utilitiesinexcess.utils.FMLEventHandler;
Expand All @@ -60,6 +62,7 @@
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
Expand Down Expand Up @@ -144,6 +147,9 @@ public void init(FMLInitializationEvent event) {
GameRegistry.registerTileEntity(TileEntityNetherStarGenerator.class, "TileEntityNetherStarGeneratorUIE");
GameRegistry.registerTileEntity(TileEntityPacifistsBench.class, "TileEntityPacifistsBenchUIE");
GameRegistry.registerTileEntity(TileEntityTradingPost.class, "TileEntityTradingPostUIE");
if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded() && Mods.Postea.isLoaded()) {
Remappings.init();
}

lapisAetheriusRenderID = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(new LapisAetheriusRenderer());
Expand Down Expand Up @@ -219,4 +225,9 @@ public ItemStack getIconItemStack() {
return ICON_ITEM;
}
};

@Mod.EventHandler
public void onMissingMappings(FMLMissingMappingsEvent event) {
ExuCompat.onMissingMappings(event);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@

public class ItemInversionSigilActive extends Item {

private static final String DURABILITY_NBT_KEY = "RemainingUses";
public static final String DURABILITY_NBT_KEY = "RemainingUses";
private static final int BEACON_SEARCH_RADIUS = 6;
private final int[][] LIGHTNING_POSITIONS = { { 0, 0 }, { -5, 0 }, { 5, 0 }, { 0, -5 }, { 0, 5 } };

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ public enum Mods {
NEI("NotEnoughItems"),
CraftTweaker("MineTweaker3"),
FindIt("findit"),
Tinkers("TConstruct")
Tinkers("TConstruct"),
ExtraUtilities("ExtraUtilities"),
Postea("postea"),
;
// spotless:on

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

import net.minecraft.block.Block;
import net.minecraft.item.Item;

import cpw.mods.fml.common.event.FMLMissingMappingsEvent;
import cpw.mods.fml.common.registry.GameRegistry;

public class ExuCompat {

public static void onMissingMappings(FMLMissingMappingsEvent event) {
for (FMLMissingMappingsEvent.MissingMapping mapping : event.getAll()) {
if (mapping == null) continue;

if (Remappings.skippedMappings.contains(mapping.name)) {
mapping.ignore();
continue;
}

if (mapping.type == GameRegistry.Type.ITEM) {
Item newItem = Remappings.itemMappings.getOrDefault(mapping.name, null);
if (newItem != null) {
mapping.remap(newItem);
}
} else { // BLOCK
Block newBlock = Remappings.blockMappings.getOrDefault(mapping.name, null);
if (newBlock != null) {
mapping.remap(newBlock);
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
package com.fouristhenumber.utilitiesinexcess.compat.exu;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import net.minecraft.block.Block;
import net.minecraft.item.Item;

import com.fouristhenumber.utilitiesinexcess.ModBlocks;
import com.fouristhenumber.utilitiesinexcess.ModItems;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.CompressedBlocksTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.ConveyorTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DarkPortalTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DecoBlock1Transformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.EnderLilyTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.TrashCanTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.DivisionSigilTransformation;
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.items.UnstableIngotTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.WateringCanTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.FullChestTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.GeneratorTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.MiniChestTransformation;
import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.SpikeTransformation;

public enum Remappings {
// spotless:off

// make sure to leave a trailing comma
// Direct block remappings
ANGEL_BLOCK("ExtraUtilities:angelBlock", ModBlocks.FLOATING_BLOCK),
BUD("ExtraUtilities:budoff", ModBlocks.BLOCK_UPDATE_DETECTOR),
DECO_BLOCK_2("ExtraUtilities:decorativeBlock2", ModBlocks.DECORATIVE_GLASS),
CURTAINS("ExtraUtilities:curtains", ModBlocks.BLACKOUT_CURTAINS),
PURE_LOVE("ExtraUtilities:pureLove", ModBlocks.PURE_LOVE),
BEDROCKUIM_BLOCK("ExtraUtilities:block_bedrockium", ModBlocks.BEDROCKIUM_BLOCK),
GREENSCREEN("ExtraUtilities:greenscreen", ModBlocks.LAPIS_AETHERIUS),
// PEACEFUL_TABLE("ExtraUtilities:peaceful_table_top", ModBlocks.abc), // TODO: add here once merged
CURSED_EARTH("ExtraUtilities:cursedearthside", ModBlocks.CURSED_EARTH),
SPIKE_WOOD("ExtraUtilities:spike_base_wood", ModBlocks.SPIKE_WOOD),
SPIKE_IRON("ExtraUtilities:spike_base", ModBlocks.SPIKE_IRON),
SPIKE_GOLD("ExtraUtilities:spike_base_gold", ModBlocks.SPIKE_GOLD),
SPIKE_DIAMOND("ExtraUtilities:spike_base_diamond", ModBlocks.SPIKE_DIAMOND),
TIMER("ExtraUtilities:timer", ModBlocks.REDSTONE_CLOCK),
ETHEREAL_GLASS("ExtraUtilities:etherealglass", ModBlocks.ETHEREAL_GLASS),
ENDER_PUMP("ExtraUtilities:enderThermicPump", ModBlocks.SMART_PUMP),
COLORED_STONE_BRICK("ExtraUtilities:colorStoneBrick", ModBlocks.COLORED_STONE_BRICKS),
COLORED_PLANKS("ExtraUtilities:colorWoodPlanks", ModBlocks.COLORED_WOOD_PLANKS),
COLORED_GLOWSTONE("ExtraUtilities:color_lightgem", ModBlocks.COLORED_GLOWSTONE),
COLORED_STONE("ExtraUtilities:color_stone", ModBlocks.COLORED_STONE),
COLORED_QUARTZ_BLOCK("ExtraUtilities:color_quartzBlock", ModBlocks.COLORED_QUARTZ_BLOCK),
COLORED_SOUL_SAND("ExtraUtilities:color_hellsand", ModBlocks.COLORED_SOUL_SAND),
COLORED_REDSTONE_LAMP("ExtraUtilities:color_redstoneLight", ModBlocks.COLORED_REDSTONE_LAMP),
COLORED_BRICKS("ExtraUtilities:color_brick", ModBlocks.COLORED_BRICKS),
COLORED_COBBLESTONE("ExtraUtilities:color_stonebrick", ModBlocks.COLORED_COBBLESTONE),
COLORED_LAPIS_BLOCK("ExtraUtilities:color_blockLapis", ModBlocks.COLORED_LAPIS_BLOCK),
COLORED_OBSIDIAN("ExtraUtilities:color_obsidian", ModBlocks.COLORED_OBSIDIAN),
COLORED_REDSTONE_BLOCK("ExtraUtilities:color_blockRedstone", ModBlocks.COLORED_REDSTONE_BLOCK),
COLORED_COAL_BLOCK("ExtraUtilities:color_blockCoal", ModBlocks.COLORED_COAL_BLOCK),

// Direct item remappings
GLOVE("ExtraUtilities:glove", ModItems.GLOVE),
HEAVENLY_RING("ExtraUtilities:angelRing", ModItems.HEAVENLY_RING),
FIRE_BATTERY("ExtraUtilities:heatingElement", ModItems.FIRE_BATTERY),
ARCHITECTS_WAND("ExtraUtilities:buildersWand", ModItems.ARCHITECTS_WAND),
SUPER_ARCHITECTS_WAND("ExtraUtilities:creativeBuildersWand", ModItems.ARCHITECTS_WAND),
INVERTED_SWORD("ExtraUtilities:ethericSword", ModItems.ETHERIC_SWORD),
INVERTED_PICKAXE("ExtraUtilities:destructionpickaxe", ModItems.DESTRUCTION_PICKAXE),
INVERTED_AXE("ExtraUtilities:defoliageAxe", ModItems.GLUTTONS_AXE),
INVERTED_SHOVEL("ExtraUtilities:erosionShovel", ModItems.ANTI_PARTICULATE_SHOVEL),
INVERTED_HOE("ExtraUtilities:temporalHoe", ModItems.REVERSING_HOE),
INVERTED_SHEARS("ExtraUtilities:shears", ModItems.PRECISION_SHEARS),
XRAY_GLASSES("ExtraUtilities:sonar_goggles", ModItems.XRAY_GLASSES),
BEDROCKUIM_INGOT("ExtraUtilities:bedrockiumIngot", ModItems.BEDROCKIUM_INGOT),
SCANNER("ExtraUtilities:scanner", ModItems.BLOCK_ANALYZER),

// Item Transformations
GOLDEN_BAG(new GoldenBagTransformation()),
WATERING_CAN(new WateringCanTransformation()),
INVERSION_SIGIL(new DivisionSigilTransformation()),
MOB_JAR(new GoldenLassoTransformation()),
INVERTED_INGOT(new UnstableIngotTransformation()),

// Block Transformations
SOUND_MUFFLER(new SoundMufflerTransformation()),
DECO_BLOCK_1(new DecoBlock1Transformation()),
COMPRESSED_BLOCKS(new CompressedBlocksTransformation()),
DARK_PORTAL(new DarkPortalTransformation()),
TRASH_CANS(new TrashCanTransformation()),
ENDER_LOTUS(new EnderLilyTransformation()),
CONVEYOR(new ConveyorTransformation()),

// Tile Entity Transformation
GENERATORS(new GeneratorTransformation()),
FULL_CHEST(new FullChestTransformation()),
MINI_CHEST(new MiniChestTransformation()),
SPIKES(new SpikeTransformation()),

// Skipped mappings
PAINT_BRUSH("ExtraUtilities:paintbrush"),
DATABLOCK("ExtraUtilities:datablock"),

; // leave trailing semicolon
// spotless:on

public static final Remappings[] VALUES = values();

public static final HashMap<String, Item> itemMappings = new HashMap<>();
public static final HashMap<String, Block> blockMappings = new HashMap<>();
public static final List<IPosteaTransformation> transformations = new ArrayList<>();
public static final Set<String> skippedMappings = new HashSet<>();

public static void preInit() {
for (Remappings remapping : VALUES) {
if (remapping.replacementItem != null) {
itemMappings.put(remapping.getName(), remapping.replacementItem);
}
if (remapping.replacementBlock != null) {
blockMappings.put(remapping.getName(), remapping.replacementBlock);
}
if (remapping.transformation != null) {
transformations.add(remapping.transformation);
}
if (remapping.isSkipped) {
skippedMappings.add(remapping.getName());
}
if (remapping.transformation != null) {
remapping.transformation.registerDummies();
remapping.transformation.addItemRemappings(itemMappings);
remapping.transformation.addBlockRemappings(blockMappings);
}
}
}

public static void init() {
for (IPosteaTransformation transformation : transformations) {
transformation.registerTEDummies();
}
}

public static void postInit() {
for (IPosteaTransformation transformation : transformations) {
transformation.registerTransformations();
}
}

private String oldName;
private Block replacementBlock = null;
private Item replacementItem = null;
private IPosteaTransformation transformation = null;

private boolean isSkipped = false;

Remappings(String oldName, ModBlocks modBlock) {
this.oldName = oldName;
this.replacementBlock = modBlock.get();
this.replacementItem = modBlock.getItem();
}

Remappings(String oldName, ModItems modItem) {
this.oldName = oldName;
this.replacementItem = modItem.get();
}

Remappings(String oldName) {
this.oldName = oldName;
isSkipped = true;
}

Remappings(IPosteaTransformation posteaTransformation) {
this.transformation = posteaTransformation;
}

public String getName() {
return oldName;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.fouristhenumber.utilitiesinexcess.compat.exu.postea;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;

public class DummyBlock extends Block {

public DummyBlock(Material materialIn) {
super(materialIn);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.fouristhenumber.utilitiesinexcess.compat.exu.postea;

import java.util.Map;

import net.minecraft.block.Block;
import net.minecraft.item.Item;

/**
* Represents a Postea transformation which handles the process of migrating a now-removed items and blocks
* in already existing saves.
* The process goes:
* "modid:removed" -> FMLMissingMappingsEvent -> "ourmodid:dummyitem" -> Postea -> "ourmodid:corrected_item"
*/
public interface IPosteaTransformation {

/**
* This method is called during a common FMLPreInitializationEvent,
* do all your GameRegistry.registerItem and GameRegistry.registerBlock calls here.
*/
default void registerDummies() {}

/**
* This method is called during a common FMLInitializationEvent,
* do all your GameRegistry.registerTileEntity calls here.
*/
default void registerTEDummies() {}

/**
* Called to add your dummy items to be mapped during the FMLMissingMappingsEvent event,
* add your items with the old item's "modid:itemname" registry name as the key
* and your dummy {@link Item} instance as the value.
* <p>
* See {@link cpw.mods.fml.common.event.FMLMissingMappingsEvent} for more.
*
* @param remappings Current running list of remappings, add yours to this.
*/
default void addItemRemappings(Map<String, Item> remappings) {}

/**
* Called to add your dummy blocks to be mapped during the FMLMissingMappingsEvent event,
* add your blocks with the old block's "modid:itemname" registry name as the key
* and your dummy {@link Block} instance as the value.
* Remember to also add it's ItemBlock instance to addItemRemappings.
* <p>
* See {@link cpw.mods.fml.common.event.FMLMissingMappingsEvent} for more.
*
* @param remappings Current running list of remappings, add yours to this.
*/
default void addBlockRemappings(Map<String, Block> remappings) {}

/**
* This method is called during a common FMLPostInitializationEvent,
* do all your BlockReplacementManager.addBlockReplacement and
* ItemStackReplacementManager.addItemReplacement calls here.
*/
default void registerTransformations() {}
}
Loading