Skip to content

Commit

Permalink
EIO Integration + Implement Custom Capacitors Directly
Browse files Browse the repository at this point in the history
  • Loading branch information
IntegerLimit committed Dec 27, 2023
1 parent 41d3408 commit 7205bc0
Show file tree
Hide file tree
Showing 17 changed files with 186 additions and 24 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ This mod requires [GregTech CEu](https://github.com/GregTechCEu/GregTech). Other
- [Content Tweaker](https://github.com/CraftTweaker/ContentTweaker) for base textures of custom fluids
- [Nomifactory](https://github.com/Nomifactory/Nomifactory) for textures of items, blocks, base code, and the original pack
- [GregTech CEu](https://github.com/GregTechCEu/GregTech) for some textures
- [Data Fixer Example](https://github.com/gabor7d2/DataFixerExampleMod) for sample & base code in Data Fixes
- [GregTech CE](https://github.com/GregTechCE/GregTech) & [Data Fixer Example](https://github.com/gabor7d2/DataFixerExampleMod) for sample & base code in Data Fixes
- [GT-Expert-Core](https://github.com/GTModpackTeam/GTExpert-Core/tree/master) for development environment runtime fix for EnderCore
28 changes: 20 additions & 8 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ dependencies {
implementation rfg.deobf("maven.modrinth:gregtech-ce-unofficial:Kff6K1WR") // Version 2.8.5
implementation rfg.deobf("maven.modrinth:gregicality-multiblocks:4BnBEiBw") // Version 1.2.7

// Pack Mode
// Pack Mode (from CurseForge)
implementation rfg.deobf("curse.maven:packmode-278398:2567799") // Version 1.2.0

// GroovyScript
// GroovyScript (from Cleanroom Maven)
implementation ("com.cleanroommc:groovyscript:0.7.2") {
transitive = false
} // Version 0.7.2, transitive false is needed otherwise groovy pulls in extra JEI
Expand All @@ -44,19 +44,31 @@ dependencies {
implementation rfg.deobf("curse.maven:storage-drawers-223852:4655859") // Version 5.5.0
implementation rfg.deobf("curse.maven:framed-compacting-drawers-376351:3015136") // Version 1.2.7

// Chisel, used in Microverse Projectors
// Ender IO (from CurseForge)
implementation rfg.deobf("curse.maven:ender-io-64578:4674244") // Version 5.3.72

// Ender Core, Dep of Ender IO, also used in-code (from CurseForge)
implementation "curse.maven:endercore-231868:4671384" // Version 0.5.78

// Ender Core Runtime Fix (Jar Files and Deps courtesy of GT-Expert-Core (https://github.com/GTModpackTeam/GTExpert-Core/tree/master))
// From Local Files and AutoSave/Config Lib
runtimeOnly files("libs/EnderCore-1.12.2-0.5.78-core.jar") // Version 0.5.78, just includes the 'core' part
runtimeOnly "info.loenwind.autoconfig:AutoConfig:1.12.2-1.0.2" // Version 1.0.2
runtimeOnly "info.loenwind.autosave:AutoSave:1.12.2-1.0.11" // Version 1.0.11

// Chisel, used in Microverse Projectors (from CurseForge)
implementation rfg.deobf("curse.maven:chisel-235279:2915375") // Version 1.0.2.45

// AE2, Used in Naquadah Reactors (PAE2 used)
// AE2, Used in Naquadah Reactors (AE2 Unofficial Extended Life used) (from CurseForge)
implementation rfg.deobf("curse.maven:ae2-extended-life-570458:4851091") // Version 0.55.27

// Extended Crafting, Used in Naquadah Reactors (Nomifactory Fork Used)
// Extended Crafting, Used in Naquadah Reactors (Nomifactory Fork Used) (from CurseForge)
implementation rfg.deobf("curse.maven:extended-crafting-nomifactory-edition-398267:4592627") // Version 1.7.0.6

// CTM, runtime dep for Chisel
// CTM, runtime dep for Chisel (from CurseForge)
runtimeOnly "curse.maven:ctm-267602:2915363" // Version 1.0.2.31

// Cucumber Lib, runtime and compile dep for Extended Crafting (No need for deobf, just dep)
// Cucumber Lib, runtime and compile dep for Extended Crafting (No need for deobf, just dep) (from CurseForge)
implementation "curse.maven:cucumber-272335:2645867" // Version 1.1.3

// Draconic Evolution, NuclearCraft, and Extra Utilities 2, the mixin patched mods (from CurseForge)
Expand All @@ -70,6 +82,6 @@ dependencies {
implementation rfg.deobf("curse.maven:brandons-core-231382:3408276") // Version 2.4.20
runtimeOnly "curse.maven:redstone-flux-270789:2920436" // Version 2.1.1.1

// Optional Deps / Integrated
// Optional Deps / Integrated (from CurseForge)
implementation rfg.deobf("curse.maven:ender-storage-245174:2755787") // Ender Storage, Version 2.4.6.137
}
Binary file added libs/EnderCore-1.12.2-0.5.78-core.jar
Binary file not shown.
6 changes: 5 additions & 1 deletion repositories.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
// Add any additional repositories for your dependencies here

repositories {
maven {
maven { // Mixin Maven Fix
url = 'https://repo.spongepowered.org/maven'
}
maven { // Autoconfig and Autosave
name 'Mod Maven'
url 'https://modmaven.dev'
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/nomiceu/nomilabs/block/BlockBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.google.common.collect.ImmutableList;
import com.nomiceu.nomilabs.integration.top.TOPInfoProvider;
import com.nomiceu.nomilabs.util.LabsTooltipHelper;
import com.nomiceu.nomilabs.tooltip.LabsTooltipHelper;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import java.util.function.Function;

import static com.nomiceu.nomilabs.util.LabsNames.makeLabsName;
import static com.nomiceu.nomilabs.util.LabsTooltipHelper.Tooltip;
import static com.nomiceu.nomilabs.tooltip.LabsTooltipHelper.Tooltip;

@SuppressWarnings("unused")
public class LabsBlocks {
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/nomiceu/nomilabs/event/ClientProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import com.nomiceu.nomilabs.fluid.registry.LabsFluids;
import com.nomiceu.nomilabs.gregtech.LabsTextures;
import com.nomiceu.nomilabs.item.registry.LabsItems;
import com.nomiceu.nomilabs.tooltip.TooltipAdder;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
Expand Down Expand Up @@ -36,4 +38,9 @@ public static void registerModels(ModelRegistryEvent event) {
public static void registerFluidModels(TextureStitchEvent.Pre event) {
LabsFluids.registerFluidModels(event);
}

@SubscribeEvent
public static void addTooltipNormal(ItemTooltipEvent event) {
TooltipAdder.addTooltipNormal(event.getToolTip(), event.getItemStack());
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/nomiceu/nomilabs/item/ItemBase.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.nomiceu.nomilabs.item;

import com.google.common.collect.ImmutableList;
import com.nomiceu.nomilabs.util.LabsTooltipHelper;
import com.nomiceu.nomilabs.tooltip.LabsTooltipHelper;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumRarity;
Expand Down
101 changes: 101 additions & 0 deletions src/main/java/com/nomiceu/nomilabs/item/ItemCapacitor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package com.nomiceu.nomilabs.item;

import com.enderio.core.client.handlers.SpecialTooltipHandler;
import com.nomiceu.nomilabs.LabsValues;
import crazypants.enderio.api.capacitor.CapabilityCapacitorData;
import crazypants.enderio.api.capacitor.ICapacitorData;
import crazypants.enderio.api.capacitor.ICapacitorKey;
import crazypants.enderio.base.lang.Lang;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

public class ItemCapacitor extends Item {
public final ICapacitorData data;
public ItemCapacitor(ResourceLocation rl, CreativeTabs tab, ICapacitorData data) {
setCreativeTab(tab);
setRegistryName(rl);
setMaxStackSize(64);
this.data = data;
}

@Override
public void addInformation(@NotNull ItemStack stack, @Nullable World worldIn, @NotNull List<String> tooltip, @NotNull ITooltipFlag flagIn) {
super.addInformation(stack, worldIn, tooltip, flagIn);
tooltip.add(I18n.format("tooltip.nomilabs.capacitors.description")); // Not using default here. This one adds `EnderIO`, making it clearer
// Add default info
if (SpecialTooltipHandler.showAdvancedTooltips())
SpecialTooltipHandler.addDetailedTooltipFromResources(tooltip, Lang.MACHINE_UPGRADE.getKey());
else
SpecialTooltipHandler.addShowDetailsTooltip(tooltip);
}

@Override
@Nullable
public ICapabilityProvider initCapabilities(@NotNull ItemStack stack, @Nullable NBTTagCompound nbt) {
return new CapacitorCapabilityProvider(data);
}

public static class CapacitorCapabilityProvider implements ICapabilityProvider {
private final ICapacitorData data;
public CapacitorCapabilityProvider(ICapacitorData data) {
this.data = data;
}

@Override
public boolean hasCapability(@NotNull Capability<?> capability, @Nullable EnumFacing facing) {
return capability == CapabilityCapacitorData.getCapNN();
}

@Nullable
@Override
public <T> T getCapability(@NotNull Capability<T> capability, @Nullable EnumFacing facing) {
if (capability == CapabilityCapacitorData.getCapNN())
return CapabilityCapacitorData.getCapNN().cast(data);
return null;
}
}

public enum LabsCapacitorData implements ICapacitorData {
COMPRESSED("compressed_octadic", 4),
DOUBLE_COMPRESSED("double_compressed_octadic", 5);

private final String name;
private final float level;

LabsCapacitorData(String name, float level) {
this.name = name;
this.level = level;
}


@Override
public float getUnscaledValue(@NotNull ICapacitorKey iCapacitorKey) {
return level;
}

@NotNull
@Override
public String getUnlocalizedName() {
return name;
}

@NotNull
@Override
public String getLocalizedName() {
return I18n.format(LabsValues.LABS_MODID + "." + name);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.nomiceu.nomilabs.item;

import com.nomiceu.nomilabs.block.registry.LabsBlocks;
import com.nomiceu.nomilabs.util.LabsTooltipHelper;
import com.nomiceu.nomilabs.tooltip.LabsTooltipHelper;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,6 @@ public class LabsItems {
public static ItemBase CARBON_ARMOR_PLATE;
public static ItemBase LAPIS_ARMOR_PLATE;


public static ItemBase COMPRESSED_OCTADIC_CAPACITOR;
public static ItemBase DOUBLE_COMPRESSED_OCTADIC_CAPACITOR;

// Core and North are part of the Crafting Nether Star mod.
public static ItemBase NETHER_STAR_SOUTH;
public static ItemBase NETHER_STAR_EAST;
Expand All @@ -196,6 +192,8 @@ public class LabsItems {
* Custom Behavior Items
* These are Items not extending BaseItem
*/
public static ItemCapacitor COMPRESSED_OCTADIC_CAPACITOR;
public static ItemCapacitor DOUBLE_COMPRESSED_OCTADIC_CAPACITOR;
public static ItemHandFramingTool HAND_FRAMING_TOOL;
public static ItemSmore[] SMORES;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import static com.nomiceu.nomilabs.util.LabsNames.makeLabsName;
import static com.nomiceu.nomilabs.item.registry.LabsItems.*;
import static com.nomiceu.nomilabs.util.LabsTooltipHelper.Tooltip;
import static com.nomiceu.nomilabs.tooltip.LabsTooltipHelper.Tooltip;

public class LabsEndgame {
public static void initEndgame() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import static com.nomiceu.nomilabs.util.LabsNames.makeLabsName;
import static com.nomiceu.nomilabs.item.registry.LabsItems.*;
import static com.nomiceu.nomilabs.util.LabsTooltipHelper.Tooltip;
import static com.nomiceu.nomilabs.tooltip.LabsTooltipHelper.Tooltip;

public class LabsMicroMiners {
public static void initMicroMinerItems() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.nomiceu.nomilabs.creativetab.registry.LabsCreativeTabs;
import com.nomiceu.nomilabs.item.ItemBase;
import com.nomiceu.nomilabs.item.ItemCapacitor;
import com.nomiceu.nomilabs.item.ItemHandFramingTool;
import com.nomiceu.nomilabs.item.ItemSmore;
import net.minecraft.init.MobEffects;
Expand All @@ -22,9 +23,6 @@ public static void initMisc() {
CARBON_ARMOR_PLATE = createItem(new ItemBase(makeLabsName("carbonarmorplate"), LabsCreativeTabs.TAB_NOMI_LABS));
LAPIS_ARMOR_PLATE = createItem(new ItemBase(makeLabsName("lapisarmorplate"), LabsCreativeTabs.TAB_NOMI_LABS));

COMPRESSED_OCTADIC_CAPACITOR = createItem(new ItemBase(makeLabsName("compressedoctadiccapacitor"), LabsCreativeTabs.TAB_NOMI_LABS));
DOUBLE_COMPRESSED_OCTADIC_CAPACITOR = createItem(new ItemBase(makeLabsName("doublecompressedoctadiccapacitor"), LabsCreativeTabs.TAB_NOMI_LABS));

// Core and North are part of the Crafting Nether Star mod.
NETHER_STAR_SOUTH = createItem(new ItemBase(makeLabsName("netherstarsouth"), LabsCreativeTabs.TAB_NOMI_LABS));
NETHER_STAR_EAST = createItem(new ItemBase(makeLabsName("netherstareast"), LabsCreativeTabs.TAB_NOMI_LABS));
Expand All @@ -41,6 +39,8 @@ public static void initMisc() {
}

public static void initCustomBehavior() {
COMPRESSED_OCTADIC_CAPACITOR = createItem(new ItemCapacitor(makeLabsName("compressedoctadiccapacitor"), LabsCreativeTabs.TAB_NOMI_LABS, ItemCapacitor.LabsCapacitorData.COMPRESSED));
DOUBLE_COMPRESSED_OCTADIC_CAPACITOR = createItem(new ItemCapacitor(makeLabsName("doublecompressedoctadiccapacitor"), LabsCreativeTabs.TAB_NOMI_LABS, ItemCapacitor.LabsCapacitorData.DOUBLE_COMPRESSED));
HAND_FRAMING_TOOL = createItem(new ItemHandFramingTool(makeLabsName("hand_framing_tool"), LabsCreativeTabs.TAB_NOMI_LABS));
SMORES = new ItemSmore[4];
createSmores();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.nomiceu.nomilabs.util;
package com.nomiceu.nomilabs.tooltip;

import mcjty.theoneprobe.api.IProbeInfo;
import net.minecraft.client.resources.I18n;
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/com/nomiceu/nomilabs/tooltip/TooltipAdder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.nomiceu.nomilabs.tooltip;

import com.enderio.core.client.handlers.SpecialTooltipHandler;
import crazypants.enderio.api.capacitor.CapabilityCapacitorData;
import crazypants.enderio.base.capacitor.CapacitorKey;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Objects;

@SideOnly(Side.CLIENT)
public class TooltipAdder {
public static void addTooltipNormal(List<String> tooltip, ItemStack stack) {
// Add Information of EIO Capacitors' Levels
if (stack.hasCapability(CapabilityCapacitorData.getCapNN(), null)) {
if (!SpecialTooltipHandler.showAdvancedTooltips()) return;

var cap = Objects.requireNonNull(stack.getCapability(CapabilityCapacitorData.getCapNN(), null)); // Null shouldn't happen, as hasCapability returned true
var level = cap.getUnscaledValue(CapacitorKey.NO_POWER);

var formatter = new DecimalFormat("0.##"); // Format Levels to two decimal places (or less, this also removes trailing zeros)
formatter.setRoundingMode(RoundingMode.HALF_UP); // Rounds up if in the middle (.5), else rounds to nearest

// No clue what to use as the capacitor key, using NO_POWER, common declarations, in EnderIO and Nomi-Labs, don't use that parameter anyways
tooltip.add(TextFormatting.DARK_PURPLE + I18n.format("tooltip.nomilabs.capacitors.level", formatter.format(level)));
}
}
}
5 changes: 5 additions & 0 deletions src/main/resources/assets/nomilabs/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,8 @@ recipemap.dme_sim_chamber.name=Simulation
# General
tooltip.nomilabs.general.press_shift_for_usages=Press [Shift] for More Usages.
tooltip.nomilabs.general.press_ctrl_for_usages=Press [Ctrl] for More Usages.
tooltip.nomilabs.general.press_shift_for_info=Press [Shift] for More Info.
tooltip.nomilabs.general.press_ctrl_for_info=Press [Ctrl] for More Info.

# Items
tooltip.nomilabs.excitationcoil.description_block=Crafting Component Only.
Expand Down Expand Up @@ -503,6 +505,9 @@ tooltip.stabilized_miners.description3=It looks oddly familiar.

tooltip.stabilized_matters.description=An infinite and incomprehensible abyss of materials.

tooltip.nomilabs.capacitors.description=EnderIO Machine Upgrade
tooltip.nomilabs.capacitors.level=Level: %s

# Multiblocks
tooltip.nomilabs.microverse_projector_1.description=A machine capable of stabilizing projection into microverses for basic micro miner missions.
tooltip.nomilabs.microverse_projector_2.description=An advanced machine capable of stabilizing projection into microverses for complex missions into the deepest parts of space.
Expand Down

0 comments on commit 7205bc0

Please sign in to comment.