Add the Matter Cluster Decompressor

This commit is contained in:
RecursivePineapple committed 2026-01-10 17:26:14 -05:00
1 parent 24ed442f27
commit 11ebec93b3
17 files changed
+1298 -12

No files matched your search

+11 -2
View File
@@ -10,12 +10,21 @@ dependencies {
compileOnly("com.github.GTNewHorizons:BloodMagic:1.8.5") {transitive = false}
compileOnly("com.github.GTNewHorizons:CraftTweaker:3.4.2:dev") {transitive = false}
compileOnly("com.github.GTNewHorizons:Hodgepodge:2.7.2:dev") {transitive = false}
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.46:dev") {transitive = false}
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.46:dev") {
exclude module: "Avaritia"
}
compileOnly("com.github.GTNewHorizons:ModularUI2:2.3.25-1.7.10:dev")
compileOnly("com.github.GTNewHorizons:GTNHLib:0.9.0:dev")
compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") {transitive = false}
compileOnly("curse.maven:cofh-lib-220333:2388748") {transitive = false}
compileOnly("curse.maven:cofh-core-69162:2388751") {transitive = false}
compileOnly("curse.maven:witchery-69673:2234410") {transitive = false}
compileOnly("org.jetbrains:annotations:26.0.2")
runtimeOnly("com.github.GTNewHorizons:GTNHLib:0.7.0:dev")
// For testing the cluster decompressor
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:ModularUI2:2.3.25-1.7.10:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:GTNHLib:0.9.0:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-781-GTNH:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.5.40-gtnh:dev")
}
+3 -1
View File
@@ -96,7 +96,9 @@ usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
# Specify the package that contains all of your Mixins. The package must exist or
# the build will fail. If you have a package property defined in your mixins.<modid>.json,
# it must match with this or the build will fail.
mixinsPackage = mixins
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.44'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.46'
}
@@ -0,0 +1,640 @@
package fox.spiteful.avaritia;
import java.util.Locale;
import net.minecraft.util.ResourceLocation;
import org.jetbrains.annotations.NotNull;
import com.gtnewhorizon.gtnhlib.util.data.IMod;
import com.gtnewhorizon.gtnhmixins.builders.ITargetMod;
import com.gtnewhorizon.gtnhmixins.builders.TargetModBuilder;
import cpw.mods.fml.common.Loader;
@SuppressWarnings("unused")
public enum Mods implements IMod, ITargetMod {
AE2FluidCraft(Names.A_E2_FLUID_CRAFT),
AFSU(Names.A_F_S_U),
AdventureBackpack(Names.ADVENTURE_BACKPACK),
AkashicTome(Names.AKASHIC_TOME),
AlchemyGrate(Names.ALCHEMY_GRATE),
AmazingTrophies(Names.AMAZING_TROPHIES),
Angelica(Names.ANGELICA),
AngerMod(Names.ANGER_MOD),
AppleCore(Names.APPLE_CORE),
AppliedEnergistics2(Names.APPLIED_ENERGISTICS2),
ArchitectureCraft(Names.ARCHITECTURE_CRAFT),
AsieLib(Names.ASIE_LIB),
Avaritia(Names.AVARITIA),
AvaritiaAddons(Names.AVARITIA_ADDONS),
MineAndBladeBattleGear2(Names.MINE_AND_BLADE_BATTLE_GEAR2),
Baubles(Names.BAUBLES),
BeeBetterAtBees(Names.BEE_BETTER_AT_BEES),
BetterAchievements(Names.BETTER_ACHIEVEMENTS),
BetterBuildersWands(Names.BETTER_BUILDERS_WANDS),
BetterCrashes(Names.BETTER_CRASHES),
BetterLoadingScreen(Names.BETTER_LOADING_SCREEN),
BetterP2P(Names.BETTER_P_2_P),
BetterQuesting(Names.BETTER_QUESTING),
BinnieCore(Names.BINNIE_CORE),
Botany(Names.BOTANY),
ExtraBees(Names.EXTRA_BEES),
ExtraTrees(Names.EXTRA_TREES),
Genetics(Names.GENETICS),
BlockLimiter(Names.BLOCK_LIMITER),
BlockRenderer6343(Names.BLOCK_RENDERER_6343),
BloodArsenal(Names.BLOOD_ARSENAL),
BloodMagic(Names.BLOOD_MAGIC),
Botania(Names.BOTANIA),
BotanicHorizons(Names.BOTANIC_HORIZONS),
BrandonsCore(Names.BRANDONS_CORE),
BuildCraftCore(Names.BUILD_CRAFT_CORE),
BuildCraftBuilders(Names.BUILD_CRAFT_BUILDERS),
BuildCraftFactory(Names.BUILD_CRAFT_FACTORY),
BuildCraftRobotics(Names.BUILD_CRAFT_ROBOTICS),
BuildCraftSilicon(Names.BUILD_CRAFT_SILICON),
BuildCraftTransport(Names.BUILD_CRAFT_TRANSPORT),
BuildCraftCompat(Names.BUILD_CRAFT_COMPAT),
BuildCraftOilTweak(Names.BUILD_CRAFT_OIL_TWEAK),
CarpentersBlocks(Names.CARPENTERS_BLOCKS),
CatWalks(Names.CAT_WALKS),
Chisel(Names.CHISEL),
ChiselTones(Names.CHISEL_TONES),
CodeChickenCore(Names.CODE_CHICKEN_CORE),
Computronics(Names.COMPUTRONICS),
Controlling(Names.CONTROLLING),
CookingForBlockheads(Names.COOKING_FOR_BLOCKHEADS),
CoreTweaks(Names.CORE_TWEAKS),
CraftTweaker(Names.CRAFT_TWEAKER),
MineTweaker(Names.MINE_TWEAKER),
CreativeCore(Names.CREATIVE_CORE),
CropLoadCore(Names.CROP_LOAD_CORE),
CropsPlusPlus(Names.CROPS_PLUS_PLUS),
CustomMainMenu(Names.CUSTOM_MAIN_MENU),
Darkerer(Names.DARKERER),
DefaultConfigs(Names.DEFAULT_CONFIGS),
DefaultServerList(Names.DEFAULT_SERVER_LIST),
DefaultWorldGenerator(Names.DEFAULT_WORLD_GENERATOR),
DraconicEvolution(Names.DRACONIC_EVOLUTION),
DummyCore(Names.DUMMY_CORE),
DuraDisplay(Names.DURA_DISPLAY),
ElectroMagicTools(Names.ELECTRO_MAGIC_TOOLS),
EnderCore(Names.ENDER_CORE),
EnderIO(Names.ENDER_I_O),
EnderStorage(Names.ENDER_STORAGE),
EnderZoo(Names.ENDER_ZOO),
EnhancedLootBags(Names.ENHANCED_LOOT_BAGS),
EtFuturumRequiem(Names.ET_FUTURUM_REQUIEM),
EternalSingularity(Names.ETERNAL_SINGULARITY),
FindIt(Names.FIND_IT),
FloodLights(Names.FLOOD_LIGHTS),
ForbiddenMagic(Names.FORBIDDEN_MAGIC),
Forestry(Names.FORESTRY),
ForgeMicroblocks(Names.FORGE_MICROBLOCKS),
ForgeRelocation(Names.FORGE_RELOCATION),
Forgelin(Names.FORGELIN),
GregTech(Names.GREG_TECH) {
@Override
protected String getEffectiveModID() {
return Names.GREG_TECH_NH;
}
},
BartWorks(Names.BART_WORKS),
DetravScannerMod(Names.DETRAV_SCANNER_MOD),
GalactiGreg(Names.GALACTI_GREG),
GGFab(Names.G_G_FAB),
GoodGenerator(Names.GOOD_GENERATOR),
GTNHLanthanides(Names.G_T_N_H_LANTHANIDES),
GTPlusPlus(Names.G_T_PLUS_PLUS),
GTPlusPlusEverglades(Names.G_T_PLUS_PLUS_EVERGLADES),
KekzTech(Names.KEKZ_TECH),
KubaTech(Names.KUBA_TECH),
NEIOrePlugin(Names.N_E_I_ORE_PLUGIN),
TecTech(Names.TECTECH),
GTNHIntergalactic(Names.G_T_N_H_INTERGALACTIC),
GTNHTCWands(Names.G_T_N_H_T_C_WANDS),
GTNHLib(Names.G_T_N_H_LIB),
Gadomancy(Names.GADOMANCY),
GalacticraftCore(Names.GALACTICRAFT_CORE),
GalacticraftMars(Names.GALACTICRAFT_MARS),
GalaxySpace(Names.GALAXY_SPACE),
GraviSuiteNEO(Names.GRAVI_SUITE_NEO),
HardcoreEnderExpansion(Names.HARDCORE_ENDER_EXPANSION),
HelpFixer(Names.HELP_FIXER),
HodgePodge(Names.HODGE_PODGE),
HoloInventory(Names.HOLO_INVENTORY),
HydroEnergy(Names.HYDRO_ENERGY),
IWillFindYou(Names.I_WILL_FIND_YOU),
IguanaTweaksTinkerConstruct(Names.IGUANA_TWEAKS_TINKER_CONSTRUCT),
InGameInfoXML(Names.IN_GAME_INFO_X_M_L),
InfernalMobs(Names.INFERNAL_MOBS),
InventoryBogoSorter(Names.INVENTORY_BOGO_SORTER),
IronChestsMinecarts(Names.IRON_CHESTS_MINECARTS),
IronTanksMinecarts(Names.IRON_TANKS_MINECARTS),
IronTanks(Names.IRON_TANKS),
JABBA(Names.J_A_B_B_A),
LittleTiles(Names.LITTLE_TILES),
LogisticsPipes(Names.LOGISTICS_PIPES),
LootGames(Names.LOOT_GAMES),
LunatriusCore(Names.LUNATRIUS_CORE),
MagicBees(Names.MAGIC_BEES),
MalisisDoors(Names.MALISIS_DOORS),
Mantle(Names.MANTLE),
MatterManipulator(Names.MATTER_MANIPULATOR),
Backpack(Names.BACKPACK),
MinetweakerGT5Addon(Names.MINETWEAKER_G_T_5_ADDON),
MobsInfo(Names.MOBS_INFO),
ModTweaker(Names.MOD_TWEAKER),
ModularUI(Names.MODULAR_U_I),
ModularUI2(Names.MODULAR_U_I_2),
MrTJPCore(Names.MR_TJP_CORE),
NEIIntegration(Names.N_E_I_INTEGRATION),
Natura(Names.NATURA),
NaturesCompass(Names.NATURES_COMPASS),
Navigator(Names.NAVIGATOR),
NetherPortalFix(Names.NETHER_PORTAL_FIX),
NewHorizonsCoreMod(Names.NEW_HORIZONS_CORE_MOD),
NodalMechanics(Names.NODAL_MECHANICS),
NotEnoughEnergistics(Names.NOT_ENOUGH_ENERGISTICS),
NotEnoughIDs(Names.NOT_ENOUGH_I_DS),
NotEnoughItems(Names.NOT_ENOUGH_ITEMS),
IC2NuclearControl(Names.I_C2_NUCLEAR_CONTROL),
Nutrition(Names.NUTRITION),
OpenGlasses(Names.OPEN_GLASSES),
OpenBlocks(Names.OPEN_BLOCKS),
OpenComputers(Names.OPEN_COMPUTERS),
OpenModsLib(Names.OPEN_MODS_LIB),
OpenModularTurrets(Names.OPEN_MODULAR_TURRETS),
OpenPrinters(Names.OPEN_PRINTERS),
OpenSecurity(Names.OPEN_SECURITY),
Opis(Names.OPIS),
OverloadedArmorBar(Names.OVERLOADED_ARMOR_BAR),
PersonalSpace(Names.PERSONAL_SPACE),
PlayerAPI(Names.PLAYER_API),
Postea(Names.POSTEA),
ProjectBlue(Names.PROJECT_BLUE),
ProjectRedCore(Names.PROJECT_RED_CORE),
ProjectRedExpansion(Names.PROJECT_RED_EXPANSION),
ProjectRedExploration(Names.PROJECT_RED_EXPLORATION),
ProjectRedFabrication(Names.PROJECT_RED_FABRICATION),
ProjectRedIllumination(Names.PROJECT_RED_ILLUMINATION),
ProjectRedIntegration(Names.PROJECT_RED_INTEGRATION),
ProjectRedTransmission(Names.PROJECT_RED_TRANSMISSION),
ProjectRedTransportation(Names.PROJECT_RED_TRANSPORTATION),
Railcraft(Names.RAILCRAFT),
RandomThings(Names.RANDOM_THINGS),
RWG(Names.RWG),
RemoteIO(Names.REMOTE_IO),
RoguelikeDungeons(Names.ROGUELIKE_DUNGEONS),
StevesCarts2(Names.STEVES_CARTS2),
SGCraft(Names.S_G_CRAFT),
SalisArcana(Names.SALIS_ARCANA),
Schematica(Names.SCHEMATICA),
ServerUtilities(Names.SERVER_UTILITIES),
ShareWhereIAm(Names.SHARE_WHERE_I_AM),
SleepingBags(Names.SLEEPING_BAGS),
SpecialMobs(Names.SPECIAL_MOBS),
SpiceOfLife(Names.SPICE_OF_LIFE),
StevesFactoryManager(Names.STEVES_FACTORY_MANAGER),
StevesAddons(Names.STEVES_ADDONS),
StorageDrawers(Names.STORAGE_DRAWERS),
StructureCompat(Names.STRUCTURE_COMPAT),
StructureLib(Names.STRUCTURE_LIB),
SuperTiC(Names.SUPER_T_I_C),
TCNEIAdditions(Names.T_C_N_E_I_ADDITIONS),
TCNodeTracker(Names.T_C_NODE_TRACKER),
TXLoader(Names.T_X_LOADER),
TaintedMagic(Names.TAINTED_MAGIC),
ThaumcraftMobAspects(Names.THAUMCRAFT_MOB_ASPECTS),
ThaumicBases(Names.THAUMIC_BASES),
ThaumicBoots(Names.THAUMIC_BOOTS),
ThaumicEnergistics(Names.THAUMIC_ENERGISTICS),
ThaumicHorizons(Names.THAUMIC_HORIZONS),
ThaumicTinkerer(Names.THAUMIC_TINKERER),
ThaumicExploration(Names.THAUMIC_EXPLORATION),
TiCTooltips(Names.T_I_C_TOOLTIPS),
TinkersDefence(Names.TINKERS_DEFENCE),
TinkerConstruct(Names.TINKER_CONSTRUCT),
TinkersMechworks(Names.TINKERS_MECHWORKS),
TooMuchLoot(Names.TOO_MUCH_LOOT),
ToroHealth(Names.TORO_HEALTH),
Translocator(Names.TRANSLOCATOR),
UniversalSingularities(Names.UNIVERSAL_SINGULARITIES),
VisualProspecting(Names.VISUAL_PROSPECTING),
WailaPlugins(Names.WAILA_PLUGINS),
WailaHarvestability(Names.WAILA_HARVESTABILITY),
WanionLib(Names.WANION_LIB),
WarpTheory(Names.WARP_THEORY),
AE2WCT(Names.AE2WCT),
WirelessRedstoneCBECore(Names.WIRELESS_REDSTONE_CBE_CORE),
WirelessRedstoneCBEAddons(Names.WIRELESS_REDSTONE_CBE_ADDONS),
WirelessRedstoneCBELogic(Names.WIRELESS_REDSTONE_CBE_LOGIC),
WitcheryExtras(Names.WITCHERY_EXTRAS),
WitchingGadgets(Names.WITCHING_GADGETS),
YAMCore(Names.YAM_CORE),
AE2Stuff(Names.AE2STUFF),
GalacticraftAmunRa(Names.GALACTICRAFT_AMUN_RA),
BDLib(Names.B_D_LIB),
Gendustry(Names.GENDUSTRY),
PamsHarvestCraft(Names.PAMS_HARVEST_CRAFT),
IronChests(Names.IRON_CHESTS),
LWJGL3ify(Names.L_W_J_G_L_3IFY),
NEICustomDiagrams(Names.N_E_I_CUSTOM_DIAGRAMS),
NEIAddons(Names.N_E_I_ADDONS),
OAuth(Names.OAUTH),
SuperSolarPanels(Names.SUPER_SOLAR_PANELS),
ThaumcraftResearchTweaks(Names.THAUMCRAFT_RESEARCH_TWEAKS),
ThaumicInsurgence(Names.THAUMIC_INSURGENCE),
TwilightForest(Names.TWILIGHT_FOREST),
Waila(Names.WAILA),
AdvancedSolarPanel(Names.ADVANCED_SOLAR_PANEL),
ArchaicFix(Names.ARCHAIC_FIX),
Automagy(Names.AUTOMAGY),
BiblioCraft(Names.BIBLIO_CRAFT),
BiblioWoodsBoPEdition(Names.BIBLIO_WOODS_BO_P_EDITION),
BiblioWoodsForestryEdition(Names.BIBLIO_WOODS_FORESTRY_EDITION),
BiblioWoodsNaturaEdition(Names.BIBLIO_WOODS_NATURA_EDITION),
BiomesOPlenty(Names.BIOMES_O_PLENTY),
BugTorch(Names.BUG_TORCH),
COFHCore(Names.C_O_F_H_CORE),
CompactKineticGenerators(Names.COMPACT_KINETIC_GENERATORS),
CraftPresence(Names.CRAFT_PRESENCE),
ExtraUtilities(Names.EXTRA_UTILITIES),
GraviSuite(Names.GRAVI_SUITE),
HungerOverhaul(Names.HUNGER_OVERHAUL),
IC2CropPlugin(Names.I_C2_CROP_PLUGIN),
IndustrialCraft2(Names.INDUSTRIAL_CRAFT2),
JourneyMap(Names.JOURNEY_MAP),
Morpheus(Names.MORPHEUS),
PamsHarvestTheNether(Names.PAMS_HARVEST_THE_NETHER),
TC4Tweaks(Names.T_C_4_TWEAKS),
ThaumcraftNEIPlugin(Names.THAUMCRAFT_N_E_I_PLUGIN),
Thaumcraft(Names.THAUMCRAFT),
ThaumicMachina(Names.THAUMIC_MACHINA),
TinkersGregworks(Names.TINKERS_GREGWORKS),
UniLib(Names.UNI_LIB),
UniMixins(Names.UNI_MIXINS),
Witchery(Names.WITCHERY),
ZTones(Names.Z_TONES),
Minecraft(Names.MINECRAFT) {
@Override
public boolean isModLoaded() {
return true;
}
},
Aroma1997Core(Names.AROMA1997_CORE),
ExtraCells2(Names.EXTRA_CELLS2),
MCFrames(Names.MC_FRAMES),
Metallurgy(Names.METALLURGY),
QuestBook(Names.QUEST_BOOK),
RotaryCraft(Names.ROTARY_CRAFT),
TravellersGear(Names.TRAVELLERS_GEAR),
UndergroundBiomes(Names.UNDERGROUND_BIOMES),
;
public static class Names {
// spotless:off
// Ordered based on the list from DAXXL Actions.
// If a jar contains multiple mods in this list, they will be done as "one declaration"
// to preserve order vs the DAXXL Actions list.
public static final String A_E2_FLUID_CRAFT = "ae2fc";
public static final String A_F_S_U = "AFSU";
public static final String ADVENTURE_BACKPACK = "adventurebackpack";
public static final String AKASHIC_TOME = "akashictome";
public static final String ALCHEMY_GRATE = "alchgrate";
public static final String AMAZING_TROPHIES = "amazingtrophies";
public static final String ANGELICA = "angelica";
public static final String ANGER_MOD = "angermod";
public static final String APPLE_CORE = "AppleCore";
public static final String APPLIED_ENERGISTICS2 = "appliedenergistics2";
public static final String ARCHITECTURE_CRAFT = "ArchitectureCraft";
public static final String ASIE_LIB = "asielib";
public static final String AVARITIA = "Avaritia";
public static final String AVARITIA_ADDONS = "avaritiaddons";
public static final String MINE_AND_BLADE_BATTLE_GEAR2 = "battlegear2"; // "Battlegear2"
public static final String BAUBLES = "Baubles";
public static final String BEE_BETTER_AT_BEES = "beebetteratbees";
public static final String BETTER_ACHIEVEMENTS = "BetterAchievements";
public static final String BETTER_BUILDERS_WANDS = "betterbuilderswands";
public static final String BETTER_CRASHES = "bettercrashes";
public static final String BETTER_LOADING_SCREEN = "betterloadingscreen";
public static final String BETTER_P_2_P = "betterp2p";
public static final String BETTER_QUESTING = "betterquesting";
public static final String BINNIE_CORE = "BinnieCore",
BOTANY = "Botany",
EXTRA_BEES = "ExtraBees",
EXTRA_TREES = "ExtraTrees",
GENETICS = "Genetics";
public static final String BLOCK_LIMITER = "blocklimiter";
public static final String BLOCK_RENDERER_6343 = "blockrenderer6343";
public static final String BLOOD_ARSENAL = "BloodArsenal";
public static final String BLOOD_MAGIC = "AWWayofTime";
public static final String BOTANIA = "Botania";
public static final String BOTANIC_HORIZONS = "botanichorizons";
public static final String BRANDONS_CORE = "BrandonsCore";
public static final String BUILD_CRAFT_CORE = "BuildCraft|Core",
BUILD_CRAFT_BUILDERS = "BuildCraft|Builders",
BUILD_CRAFT_FACTORY = "BuildCraft|Factory",
BUILD_CRAFT_ROBOTICS = "BuildCraft|Robotics",
BUILD_CRAFT_SILICON = "BuildCraft|Silicon",
BUILD_CRAFT_TRANSPORT = "BuildCraft|Transport";
public static final String BUILD_CRAFT_COMPAT = "BuildCraft|Compat";
public static final String BUILD_CRAFT_OIL_TWEAK = "OilTweak";
public static final String CARPENTERS_BLOCKS = "CarpentersBlocks";
public static final String CAT_WALKS = "catwalks";
public static final String CHISEL = "chisel",
CHISEL_API = "ChiselAPI";
public static final String CHISEL_TONES = "chiseltones";
public static final String CODE_CHICKEN_CORE = "CodeChickenCore";
public static final String COMPUTRONICS = "computronics";
public static final String CONTROLLING = "controlling";
public static final String COOKING_FOR_BLOCKHEADS = "cookingforblockheads";
public static final String CORE_TWEAKS = "coretweaks";
public static final String CRAFT_TWEAKER = "MineTweaker3",
MINE_TWEAKER = "MineTweaker3";
public static final String CREATIVE_CORE = "creativecore";
public static final String CROP_LOAD_CORE = "croploadcore";
public static final String CROPS_PLUS_PLUS = "berriespp";
public static final String CUSTOM_MAIN_MENU = "custommainmenu";
public static final String DARKERER = "darkerer";
public static final String DEFAULT_CONFIGS = "defaultkeys";
public static final String DEFAULT_SERVER_LIST = "defaultserverlist";
public static final String DEFAULT_WORLD_GENERATOR = "defaultworldgenerator";
public static final String DRACONIC_EVOLUTION = "DraconicEvolution";
public static final String DUMMY_CORE = "DummyCore";
public static final String DURA_DISPLAY = "duradisplay";
public static final String ELECTRO_MAGIC_TOOLS = "EMT";
public static final String ENDER_CORE = "endercore";
public static final String ENDER_I_O = "EnderIO";
public static final String ENDER_STORAGE = "EnderStorage";
public static final String ENDER_ZOO = "EnderZoo";
public static final String ENHANCED_LOOT_BAGS = "enhancedlootbags";
public static final String ET_FUTURUM_REQUIEM = "etfuturum";
public static final String ETERNAL_SINGULARITY = "eternalsingularity";
public static final String FIND_IT = "findit";
public static final String FLOOD_LIGHTS = "FloodLights";
public static final String FORBIDDEN_MAGIC = "ForbiddenMagic";
public static final String FORESTRY = "Forestry";
public static final String FORGE_MICROBLOCKS = "ForgeMicroblock";
public static final String FORGE_RELOCATION = "ForgeRelocation";
public static final String FORGELIN = "forgelin";
public static final String GREG_TECH = "gregtech",
GREG_TECH_NH = "gregtech_nh",
BART_WORKS = "bartworks",
DETRAV_SCANNER_MOD = "detravscannermod",
GALACTI_GREG = "galacticgreg",
G_G_FAB = "ggfab",
GOOD_GENERATOR = "GoodGenerator",
G_T_N_H_LANTHANIDES = "gtnhlanth",
G_T_PLUS_PLUS = "miscutils",
G_T_PLUS_PLUS_EVERGLADES = "ToxicEverglades",
KEKZ_TECH = "kekztech",
KUBA_TECH = "kubatech",
N_E_I_ORE_PLUGIN = "gtneioreplugin",
TECTECH = "tectech";
public static final String G_T_N_H_INTERGALACTIC = "gtnhintergalactic";
public static final String G_T_N_H_T_C_WANDS = "gtnhtcwands";
public static final String G_T_N_H_LIB = "gtnhlib";
public static final String GADOMANCY = "gadomancy";
public static final String GALACTICRAFT_CORE = "GalacticraftCore",
GALACTICRAFT_MARS = "GalacticraftMars";
public static final String GALAXY_SPACE = "GalaxySpace";
public static final String GRAVI_SUITE_NEO = "gravisuiteneo";
public static final String HARDCORE_ENDER_EXPANSION = "HardcoreEnderExpansion";
public static final String HELP_FIXER = "HelpFixer";
public static final String HODGE_PODGE = "hodgepodge";
public static final String HOLO_INVENTORY = "holoinventory";
public static final String HYDRO_ENERGY = "hydroenergy";
public static final String I_WILL_FIND_YOU = "ifu"; // "IFU"
public static final String IGUANA_TWEAKS_TINKER_CONSTRUCT = "IguanaTweaksTConstruct";
public static final String IN_GAME_INFO_X_M_L = "InGameInfoXML";
public static final String INFERNAL_MOBS = "InfernalMobs";
public static final String INVENTORY_BOGO_SORTER = "bogosorter";
public static final String IRON_CHESTS_MINECARTS = "ironchestminecarts";
public static final String IRON_TANKS_MINECARTS = "irontankminecarts";
public static final String IRON_TANKS = "irontank";
public static final String J_A_B_B_A = "JABBA";
public static final String LITTLE_TILES = "littletiles";
public static final String LOGISTICS_PIPES = "LogisticsPipes";
public static final String LOOT_GAMES = "lootgames";
public static final String LUNATRIUS_CORE = "LunatriusCore";
public static final String MAGIC_BEES = "MagicBees";
public static final String MALISIS_DOORS = "malisisdoors";
public static final String MANTLE = "Mantle";
public static final String MATTER_MANIPULATOR = "matter-manipulator";
public static final String BACKPACK = "Backpack"; // "Minecraft Backpack Mod"
public static final String MINETWEAKER_G_T_5_ADDON = "GTTweaker";
public static final String MOBS_INFO = "mobsinfo";
public static final String MOD_TWEAKER = "modtweaker2";
public static final String MODULAR_U_I = "modularui";
public static final String MODULAR_U_I_2 = "modularui2";
public static final String MR_TJP_CORE = "MrTJPCoreMod";
public static final String N_E_I_INTEGRATION = "neiintegration";
public static final String NATURA = "Natura";
public static final String NATURES_COMPASS = "naturescompass";
public static final String NAVIGATOR = "navigator";
public static final String NETHER_PORTAL_FIX = "netherportalfix";
public static final String NEW_HORIZONS_CORE_MOD = "dreamcraft";
public static final String NODAL_MECHANICS = "NodalMechanics";
public static final String NOT_ENOUGH_ENERGISTICS = "neenergistics";
public static final String NOT_ENOUGH_I_DS = "neid";
public static final String NOT_ENOUGH_ITEMS = "NotEnoughItems";
public static final String I_C2_NUCLEAR_CONTROL = "IC2NuclearControl"; // "Nuclear-Control"
public static final String NUTRITION = "nutrition";
public static final String OPEN_GLASSES = "openglasses"; // "OCGlasses"
public static final String OPEN_BLOCKS = "OpenBlocks";
public static final String OPEN_COMPUTERS = "OpenComputers";
public static final String OPEN_MODS_LIB = "OpenMods";
public static final String OPEN_MODULAR_TURRETS = "openmodularturrets";
public static final String OPEN_PRINTERS = "openprinter";
public static final String OPEN_SECURITY = "opensecurity";
public static final String OPIS = "Opis";
public static final String OVERLOADED_ARMOR_BAR = "overloadedarmorbar";
public static final String PERSONAL_SPACE = "personalspace";
public static final String PLAYER_API = "PlayerAPI";
public static final String POSTEA = "postea";
public static final String PROJECT_BLUE = "ProjectBlue";
public static final String PROJECT_RED_CORE = "ProjRed|Core",
PROJECT_RED_EXPANSION = "ProjRed|Expansion",
PROJECT_RED_EXPLORATION = "ProjRed|Exploration",
PROJECT_RED_FABRICATION = "ProjRed|Fabrication",
PROJECT_RED_ILLUMINATION = "ProjRed|Illumination",
PROJECT_RED_INTEGRATION = "ProjRed|Integration",
PROJECT_RED_TRANSMISSION = "ProjRed|Transmission",
PROJECT_RED_TRANSPORTATION = "ProjRed|Transportation";
public static final String RAILCRAFT = "Railcraft";
public static final String RANDOM_THINGS = "RandomThings";
public static final String RWG = "RWG";
public static final String REMOTE_IO = "RIO";
public static final String ROGUELIKE_DUNGEONS = "Roguelike";
public static final String STEVES_CARTS2 = "StevesCarts"; // "SC2"
public static final String S_G_CRAFT = "SGCraft";
public static final String SALIS_ARCANA = "salisarcana";
public static final String SCHEMATICA = "Schematica";
public static final String SERVER_UTILITIES = "serverutilities";
public static final String SHARE_WHERE_I_AM = "sharewhereiam";
public static final String SLEEPING_BAGS = "sleepingbag";
public static final String SPECIAL_MOBS = "SpecialMobs";
public static final String SPICE_OF_LIFE = "SpiceOfLife";
public static final String STEVES_FACTORY_MANAGER = "StevesFactoryManager";
public static final String STEVES_ADDONS = "StevesAddons";
public static final String STORAGE_DRAWERS = "StorageDrawers";
public static final String STRUCTURE_COMPAT = "structurecompat";
public static final String STRUCTURE_LIB = "structurelib";
public static final String SUPER_T_I_C = "SuperTic";
public static final String T_C_N_E_I_ADDITIONS = "tcneiadditions";
public static final String T_C_NODE_TRACKER = "tcnodetracker";
public static final String T_X_LOADER = "txloader";
public static final String TAINTED_MAGIC = "TaintedMagic";
public static final String THAUMCRAFT_MOB_ASPECTS = "ThaumcraftMobAspects";
public static final String THAUMIC_BASES = "thaumicbases";
public static final String THAUMIC_BOOTS = "thaumicboots";
public static final String THAUMIC_ENERGISTICS = "thaumicenergistics";
public static final String THAUMIC_HORIZONS = "ThaumicHorizons";
public static final String THAUMIC_TINKERER = "ThaumicTinkerer";
public static final String THAUMIC_EXPLORATION = "ThaumicExploration";
public static final String T_I_C_TOOLTIPS = "TiCTooltips";
public static final String TINKERS_DEFENCE = "tinkersdefense";
public static final String TINKER_CONSTRUCT = "TConstruct";
public static final String TINKERS_MECHWORKS = "TMechworks";
public static final String TOO_MUCH_LOOT = "TML";
public static final String TORO_HEALTH = "torohealthmod";
public static final String TRANSLOCATOR = "Translocator";
public static final String UNIVERSAL_SINGULARITIES = "universalsingularities";
public static final String VISUAL_PROSPECTING = "visualprospecting";
public static final String WAILA_PLUGINS = "wailaplugins";
public static final String WAILA_HARVESTABILITY = "WailaHarvestability";
public static final String WANION_LIB = "wanionlib";
public static final String WARP_THEORY = "WarpTheory";
public static final String AE2WCT = "ae2wct"; // "WirelessCraftingTerminal"
public static final String WIRELESS_REDSTONE_CBE_CORE = "WR-CBE|Core",
WIRELESS_REDSTONE_CBE_ADDONS = "WR-CBE|Addons",
WIRELESS_REDSTONE_CBE_LOGIC = "WR-CBE|Logic";
public static final String WITCHERY_EXTRAS = "WitcheryExtras";
public static final String WITCHING_GADGETS = "WitchingGadgets";
public static final String YAM_CORE = "YAMCore"; // "Yamcl"
// Lowercase file names in DAXXL Actions, listed later than the above
public static final String AE2STUFF = "ae2stuff";
public static final String GALACTICRAFT_AMUN_RA = "GalacticraftAmunRa"; // "amunra"
public static final String B_D_LIB = "bdlib";
public static final String GENDUSTRY = "gendustry";
public static final String PAMS_HARVEST_CRAFT = "harvestcraft"; // "harvestcraft"
public static final String IRON_CHESTS = "IronChest";
public static final String L_W_J_G_L_3IFY = "lwjgl3ify";
public static final String N_E_I_CUSTOM_DIAGRAMS = "neicustomdiagram";
public static final String N_E_I_ADDONS = "NEIAddons";
public static final String OAUTH = "oauth";
public static final String SUPER_SOLAR_PANELS = "supersolarpanel";
public static final String THAUMCRAFT_RESEARCH_TWEAKS = "ThaumcraftResearchTweaks";
public static final String THAUMIC_INSURGENCE = "thaumicinsurgence";
public static final String TWILIGHT_FOREST = "TwilightForest";
public static final String WAILA = "Waila";
// "External mods" section in DAXXL Actions
public static final String ADVANCED_SOLAR_PANEL = "AdvancedSolarPanel";
public static final String ARCHAIC_FIX = "archaicfix";
public static final String AUTOMAGY = "Automagy";
public static final String BIBLIO_CRAFT = "BiblioCraft";
public static final String BIBLIO_WOODS_BO_P_EDITION = "BiblioWoodsBoP";
public static final String BIBLIO_WOODS_FORESTRY_EDITION = "BiblioWoodsForestry";
public static final String BIBLIO_WOODS_NATURA_EDITION = "BiblioWoodsNatura";
public static final String BIOMES_O_PLENTY = "BiomesOPlenty";
public static final String BUG_TORCH = "bugtorch";
public static final String C_O_F_H_CORE = "CoFHCore";
public static final String COMPACT_KINETIC_GENERATORS = "compactkineticgenerators";
public static final String CRAFT_PRESENCE = "craftpresence";
public static final String EXTRA_UTILITIES = "ExtraUtilities";
public static final String GRAVI_SUITE = "GraviSuite";
// "Healer" - Don't know what this is or where it comes from but it's in the list
public static final String HUNGER_OVERHAUL = "HungerOverhaul";
public static final String I_C2_CROP_PLUGIN = "Ic2Nei";
public static final String INDUSTRIAL_CRAFT2 = "IC2";
// JourneyMap Server
public static final String JOURNEY_MAP = "journeymap";
public static final String MORPHEUS = "Morpheus";
public static final String PAMS_HARVEST_THE_NETHER = "harvestthenether";
public static final String T_C_4_TWEAKS = "tc4tweak";
public static final String THAUMCRAFT_N_E_I_PLUGIN = "thaumcraftneiplugin";
public static final String THAUMCRAFT = "Thaumcraft";
public static final String THAUMIC_MACHINA = "ThaumicMachina";
public static final String TINKERS_GREGWORKS = "TGregworks";
public static final String UNI_LIB = "unilib";
public static final String UNI_MIXINS = "unimixins";
public static final String WITCHERY = "witchery";
public static final String Z_TONES = "Ztones";
// Minecraft :)
public static final String MINECRAFT = "minecraft";
// Misc, should eventually be removed
public static final String AROMA1997_CORE = "Aroma1997Core";
public static final String EXTRA_CELLS2 = "extracells";
public static final String MC_FRAMES = "MCFrames";
public static final String METALLURGY = "Metallurgy";
public static final String QUEST_BOOK = "questbook";
public static final String ROTARY_CRAFT = "RotaryCraft";
public static final String TRAVELLERS_GEAR = "TravellersGear";
public static final String UNDERGROUND_BIOMES = "UndergroundBiomes";
// spotless:on
}
public final String ID;
public final String resourceDomain;
protected boolean checkedMod, modLoaded;
protected final TargetModBuilder builder;
Mods(String ID) {
this.ID = ID;
this.resourceDomain = ID.toLowerCase(Locale.ENGLISH);
this.builder = new TargetModBuilder().setModId(getEffectiveModID());
}
@Override
public @NotNull TargetModBuilder getBuilder() {
return builder;
}
@Override
public String getID() {
return ID;
}
protected String getEffectiveModID() {
return ID;
}
public boolean isModLoaded() {
if (!checkedMod) {
this.modLoaded = Loader.isModLoaded(getEffectiveModID());
checkedMod = true;
}
return this.modLoaded;
}
@Override
public String getResourceLocation() {
return resourceDomain;
}
public String getResourcePath(String... path) {
return this.getResourceLocation(path).toString();
}
public ResourceLocation getResourceLocation(String... path) {
return new ResourceLocation(this.resourceDomain, String.join("/", path));
}
}
@@ -0,0 +1,113 @@
package fox.spiteful.avaritia.blocks;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.cleanroommc.modularui.factory.GuiManager;
import com.cleanroommc.modularui.factory.PosGuiData;
import com.cleanroommc.modularui.factory.TileEntityGuiFactory;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import fox.spiteful.avaritia.items.ItemMatterClusterOpener;
import fox.spiteful.avaritia.tile.TileMatterClusterOpener;
public class BlockMatterClusterOpener extends BlockContainer {
public BlockMatterClusterOpener() {
super(Material.iron);
setBlockName("cluster_opener");
}
public static void register() {
LudicrousBlocks.clusterOpener = new BlockMatterClusterOpener();
GameRegistry.registerBlock(LudicrousBlocks.clusterOpener, ItemMatterClusterOpener.class, "cluster_opener");
GameRegistry.registerTileEntity(TileMatterClusterOpener.class, "cluster_opener");
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TileMatterClusterOpener();
}
@Override
public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer player, int side, float subX,
float subY, float subZ) {
if (!worldIn.isRemote) {
PosGuiData data = new PosGuiData(player, x, y, z);
GuiManager.open(TileEntityGuiFactory.INSTANCE, data, (EntityPlayerMP) player);
}
return true;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
int l = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(x, y, z, l, 2);
}
@Override
public void onBlockPreDestroy(World worldIn, int x, int y, int z, int meta) {
super.onBlockPreDestroy(worldIn, x, y, z, meta);
((TileMatterClusterOpener) worldIn.getTileEntity(x, y, z)).dropContents();
}
@SideOnly(Side.CLIENT)
private IIcon top, side, front;
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister reg) {
top = reg.registerIcon("avaritia:cluster_opener/top");
side = reg.registerIcon("avaritia:cluster_opener/side");
front = reg.registerIcon("avaritia:cluster_opener/front");
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(IBlockAccess worldIn, int x, int y, int z, int side) {
// In-world rendering
ForgeDirection dir = ForgeDirection.getOrientation(side);
if (dir == ForgeDirection.UP) return top;
if (dir == ForgeDirection.DOWN) return top;
ForgeDirection front = switch (worldIn.getBlockMetadata(x, y, z)) {
case 0 -> ForgeDirection.NORTH;
case 1 -> ForgeDirection.EAST;
case 2 -> ForgeDirection.SOUTH;
case 3 -> ForgeDirection.WEST;
default -> ForgeDirection.UNKNOWN;
};
return dir == front ? this.front : this.side;
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int side, int meta) {
// In-hand rendering
ForgeDirection dir = ForgeDirection.getOrientation(side);
if (dir == ForgeDirection.UP) return top;
if (dir == ForgeDirection.DOWN) return top;
return dir == ForgeDirection.SOUTH ? this.front : this.side;
}
}
@@ -2,6 +2,7 @@ package fox.spiteful.avaritia.blocks;
import net.minecraft.block.Block;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.GameRegistry;
import fox.spiteful.avaritia.Config;
import fox.spiteful.avaritia.tile.TileEntityCompressor;
@@ -23,6 +24,8 @@ public class LudicrousBlocks {
public static Block infinitato;
public static Block clusterOpener;
public static void voxelize() {
double_craft = GameRegistry.registerBlock(new BlockDoubleCraft(), "Double_Craft");
triple_craft = GameRegistry.registerBlock(new BlockTripleCraft(), "Triple_Craft");
@@ -37,5 +40,9 @@ public class LudicrousBlocks {
GameRegistry.registerTileEntity(TileEntityNeutron.class, "Avaritia_Neutron");
compressor = GameRegistry.registerBlock(new BlockCompressor(), "Neutronium_Compressor");
GameRegistry.registerTileEntity(TileEntityCompressor.class, "Avaritia_Compressor");
if (Loader.isModLoaded("gtnhlib") && Loader.isModLoaded("modularui2")) {
BlockMatterClusterOpener.register();
}
}
}
@@ -483,6 +483,35 @@ public class Grinder {
new ItemStack(Blocks.redstone_block, 1),
'O',
new ItemStack(LudicrousBlocks.resource_block, 1, 0));
if (LudicrousBlocks.clusterOpener != null) {
ExtremeCraftingManager.getInstance().addRecipe(
new ItemStack(LudicrousBlocks.clusterOpener),
"IIIXIXIII",
"X X",
"E N E",
"XXXXNXXXX",
"E N E",
"X X",
"E XNNNX E",
"X X X X",
"IIIHHHIII",
'X',
// Crystal matrix ingot
new ItemStack(LudicrousItems.resource, 1, 1),
'N',
// Neutronium ingot
new ItemStack(LudicrousItems.resource, 1, 4),
'I',
new ItemStack(Blocks.iron_block, 1),
'H',
new ItemStack(Blocks.hopper, 1),
'E',
new ItemStack(Blocks.emerald_block, 1),
'F',
// Infinity ingot
new ItemStack(LudicrousItems.resource, 1, 6));
}
}
}
@@ -70,7 +70,7 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
tooltip.add(
clustertag.getInteger(MAINCOUNTTAG) + "/"
+ MAX_CAPACITY
+ Math.max(MAX_CAPACITY, clustertag.getInteger(MAINCOUNTTAG))
+ " "
+ StatCollector.translateToLocal("tooltip.matter_cluster.counter"));
tooltip.add("");
@@ -93,6 +93,7 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
}
} else {
tooltip.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("tooltip.matter_cluster.desc"));
tooltip.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("tooltip.matter_cluster.desc3"));
tooltip.add(
EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC
+ StatCollector.translateToLocal("tooltip.matter_cluster.desc2"));
@@ -126,7 +127,7 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
itemlist.remove(0);
}
if (currentTotal == MAX_CAPACITY) {
if (currentTotal >= MAX_CAPACITY) {
ItemStack cluster = makeCluster(currentItems);
clusters.add(cluster);
@@ -155,6 +156,18 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
return cluster;
}
public static ItemStack makeCluster(ItemStack input) {
HashMap<ItemStackWrapper, Integer> map = new HashMap<>();
ItemStack input2 = input.copy();
input2.stackSize = 1;
map.put(new ItemStackWrapper(input2), input.stackSize);
ItemStack cluster = new ItemStack(LudicrousItems.matter_cluster);
setClusterData(cluster, map, input.stackSize);
return cluster;
}
public static Map<ItemStackWrapper, Integer> getClusterData(ItemStack cluster) {
if (!cluster.hasTagCompound() || !cluster.getTagCompound().hasKey(MAINTAG)) {
return new HashMap<>();
@@ -186,7 +199,7 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
}
public static boolean isClusterFull(ItemStack cluster) {
return getClusterSize(cluster) == MAX_CAPACITY;
return getClusterSize(cluster) >= MAX_CAPACITY;
}
public static void setClusterData(ItemStack stack, Map<ItemStackWrapper, Integer> data, int count) {
@@ -212,7 +225,7 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
int donorcount = getClusterSize(donor);
int recipientcount = getClusterSize(recipient);
if (donorcount == 0 || donorcount == MAX_CAPACITY || recipientcount == MAX_CAPACITY) {
if (donorcount == 0 || donorcount >= MAX_CAPACITY || recipientcount >= MAX_CAPACITY) {
return;
}
@@ -275,7 +288,7 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
@Override
public IIcon getMaskTexture(ItemStack stack, EntityPlayer player) {
int count = getClusterSize(stack);
if (count == MAX_CAPACITY) {
if (count >= MAX_CAPACITY) {
return cosmicIconFull;
}
return cosmicIcon;
@@ -284,13 +297,13 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
@Override
public float getMaskMultiplier(ItemStack stack, EntityPlayer player) {
int count = getClusterSize(stack);
return count / (float) MAX_CAPACITY;
return Math.min(1f, count / (float) MAX_CAPACITY);
}
@Override
public IIcon getIcon(ItemStack stack, int pass) {
int count = getClusterSize(stack);
if (count == MAX_CAPACITY) {
if (count >= MAX_CAPACITY) {
return iconFull;
}
return super.getIcon(stack, pass);
@@ -307,6 +320,9 @@ public class ItemMatterCluster extends Item implements ICosmicRenderItem {
if (count == MAX_CAPACITY) {
return super.getUnlocalizedName(stack) + ".full";
}
if (count > MAX_CAPACITY) {
return super.getUnlocalizedName(stack) + ".veryfull";
}
return super.getUnlocalizedName(stack);
}
}
@@ -0,0 +1,29 @@
package fox.spiteful.avaritia.items;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemMatterClusterOpener extends ItemBlock {
public ItemMatterClusterOpener(Block block) {
super(block);
}
@SideOnly(Side.CLIENT)
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
super.addInformation(stack, player, tooltip, advanced);
tooltip.add(StatCollector.translateToLocal("tooltip.matter-cluster-decompressor.line1"));
tooltip.add(StatCollector.translateToLocal("tooltip.matter-cluster-decompressor.line2"));
tooltip.add(StatCollector.translateToLocal("tooltip.matter-cluster-decompressor.line3"));
}
}
@@ -130,7 +130,14 @@ public class ToolHelper {
ItemStack drop = blk
.getPickBlock(raytraceFromEntity(world, player, true, 10), world, x, y, z, player);
if (drop == null) drop = new ItemStack(blk, 1, meta);
dropItem(drop, world, x, y, z);
List<ItemStack> drops = hammerdrops.get(player);
if (drops != null) {
drops.add(drop);
} else {
dropItem(drop, world, x, y, z);
}
}
blk.harvestBlock(world, player, x, y, z, localMeta);
}
@@ -0,0 +1,411 @@
package fox.spiteful.avaritia.tile;
import java.util.Map;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import net.minecraftforge.oredict.OreDictionary;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.cleanroommc.modularui.api.IGuiHolder;
import com.cleanroommc.modularui.drawable.AdaptableUITexture;
import com.cleanroommc.modularui.drawable.GuiTextures;
import com.cleanroommc.modularui.drawable.UITexture;
import com.cleanroommc.modularui.factory.PosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.screen.UISettings;
import com.cleanroommc.modularui.utils.Alignment;
import com.cleanroommc.modularui.utils.item.IItemHandlerModifiable;
import com.cleanroommc.modularui.utils.item.InvWrapper;
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
import com.cleanroommc.modularui.widgets.SlotGroupWidget;
import com.cleanroommc.modularui.widgets.TextWidget;
import com.cleanroommc.modularui.widgets.layout.Column;
import com.cleanroommc.modularui.widgets.layout.Row;
import com.cleanroommc.modularui.widgets.slot.FluidSlot;
import com.cleanroommc.modularui.widgets.slot.ItemSlot;
import com.cleanroommc.modularui.widgets.slot.ModularSlot;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.gtnewhorizon.gtnhlib.capability.CapabilityProvider;
import com.gtnewhorizon.gtnhlib.capability.item.ItemSink;
import com.gtnewhorizon.gtnhlib.capability.item.ItemSource;
import com.gtnewhorizon.gtnhlib.item.InventoryItemSink;
import com.gtnewhorizon.gtnhlib.item.InventoryItemSource;
import com.gtnewhorizon.gtnhlib.util.ItemUtil;
import com.gtnewhorizon.gtnhlib.util.data.LazyItem;
import fox.spiteful.avaritia.Mods;
import fox.spiteful.avaritia.items.ItemMatterCluster;
import fox.spiteful.avaritia.items.ItemStackWrapper;
public class TileMatterClusterOpener extends TileEntity
implements ISidedInventory, CapabilityProvider, IGuiHolder<PosGuiData>, IFluidHandler {
private ItemStack clusterInput, itemOutput;
private final FluidTank fluidOutput = new FluidTank(Integer.MAX_VALUE);
private static final LazyItem FLUID_DROPS = new LazyItem(
Mods.AE2FluidCraft,
"fluid_drop",
OreDictionary.WILDCARD_VALUE);
private static final int[] INPUT_SLOTS = { 0 };
private static final int[] OUTPUT_SLOTS = { 1 };
@Override
public void updateEntity() {
super.updateEntity();
if (worldObj.isRemote) return;
if (clusterInput != null && clusterInput.stackSize <= 0) {
clusterInput = null;
markDirty();
}
if (itemOutput != null && itemOutput.stackSize <= 0) {
itemOutput = null;
markDirty();
}
if (fluidOutput.getFluid() != null && fluidOutput.getFluidAmount() <= 0) {
fluidOutput.setFluid(null);
markDirty();
}
if (clusterInput == null) return;
if (itemOutput != null || fluidOutput.getFluid() != null) return;
Map<ItemStackWrapper, Integer> contents = ItemMatterCluster.getClusterData(clusterInput);
if (contents.isEmpty()) return;
var iter = contents.entrySet().iterator();
var e = iter.next();
iter.remove();
if (contents.isEmpty()) {
clusterInput = null;
} else {
ItemMatterCluster.setClusterData(clusterInput, contents, contents.values().stream().mapToInt(i -> i).sum());
}
itemOutput = ItemUtil.copyAmount(e.getValue(), e.getKey().stack);
if (FLUID_DROPS.isLoaded() && FLUID_DROPS.matches(itemOutput)) {
fluidOutput.setFluid(ItemFluidDrop.getFluidStack(itemOutput));
itemOutput = null;
}
markDirty();
}
@Override
public void writeToNBT(NBTTagCompound compound) {
super.writeToNBT(compound);
if (clusterInput != null) {
compound.setTag("clusterInput", clusterInput.writeToNBT(new NBTTagCompound()));
}
if (itemOutput != null) {
compound.setTag("itemOutput", itemOutput.writeToNBT(new NBTTagCompound()));
}
if (fluidOutput.getFluid() != null) {
compound.setTag("fluidOutput", fluidOutput.getFluid().writeToNBT(new NBTTagCompound()));
}
}
@Override
public void readFromNBT(NBTTagCompound compound) {
super.readFromNBT(compound);
clusterInput = null;
itemOutput = null;
fluidOutput.setFluid(null);
if (compound.hasKey("clusterInput")) {
clusterInput = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("clusterInput"));
}
if (compound.hasKey("itemOutput")) {
itemOutput = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("itemOutput"));
}
if (compound.hasKey("fluidOutput")) {
fluidOutput.setFluid(FluidStack.loadFluidStackFromNBT(compound.getCompoundTag("fluidOutput")));
}
}
public void dropContents() {
if (clusterInput != null) {
EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, clusterInput);
worldObj.spawnEntityInWorld(item);
clusterInput = null;
}
if (itemOutput != null) {
ItemStack cluster = ItemMatterCluster.makeCluster(itemOutput);
itemOutput = null;
EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, cluster);
worldObj.spawnEntityInWorld(item);
}
if (FLUID_DROPS.isLoaded() && fluidOutput.getFluidAmount() > 0) {
ItemStack drops = ItemFluidDrop.newStack(fluidOutput.getFluid());
assert drops != null;
ItemStack cluster = ItemMatterCluster.makeCluster(drops);
EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, cluster);
worldObj.spawnEntityInWorld(item);
}
}
@Override
public <T> @Nullable T getCapability(@NotNull Class<T> capability, @NotNull ForgeDirection side) {
if (capability == ItemSource.class) {
return capability.cast(new OutputSlotSource());
}
if (capability == ItemSink.class) {
return capability.cast(new InventoryItemSink(this, side));
}
return null;
}
private class OutputSlotSource extends InventoryItemSource {
public OutputSlotSource() {
super(TileMatterClusterOpener.this, ForgeDirection.UNKNOWN);
}
@Override
protected int[] getSlots() {
return OUTPUT_SLOTS;
}
}
@Override
public int[] getAccessibleSlotsFromSide(int side) {
return INPUT_SLOTS;
}
@Override
public boolean canInsertItem(int slotIndex, ItemStack stack, int side) {
return slotIndex == 0;
}
@Override
public boolean canExtractItem(int slotIndex, ItemStack stack, int side) {
return slotIndex == 0;
}
@Override
public int getSizeInventory() {
return 2;
}
@Override
public ItemStack getStackInSlot(int slotIn) {
if (slotIn == 0) return clusterInput;
if (slotIn == 1) return itemOutput;
return null;
}
@Override
public ItemStack decrStackSize(int index, int count) {
if (index != 0) return null;
if (clusterInput == null) return null;
int removable = Math.min(count, clusterInput.stackSize);
ItemStack out = clusterInput.splitStack(removable);
if (ItemUtil.isStackEmpty(clusterInput)) clusterInput = null;
markDirty();
return out;
}
@Override
public ItemStack getStackInSlotOnClosing(int index) {
return decrStackSize(index, Integer.MAX_VALUE);
}
@Override
public void setInventorySlotContents(int index, ItemStack stack) {
if (index == 0) {
clusterInput = stack;
}
if (index == 1) {
itemOutput = stack;
}
}
@Override
public String getInventoryName() {
return getBlockType().getLocalizedName();
}
@Override
public boolean hasCustomInventoryName() {
return false;
}
@Override
public int getInventoryStackLimit() {
return 1;
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
return true;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public boolean isItemValidForSlot(int index, ItemStack stack) {
if (index == 0) {
return stack.getItem() instanceof ItemMatterCluster;
} else if (index == 1) {
return true;
} else {
return false;
}
}
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
return 0;
}
@Override
public boolean canFill(ForgeDirection from, Fluid fluid) {
return false;
}
@Override
public boolean canDrain(ForgeDirection from, Fluid fluid) {
return fluidOutput.getFluid() != null && fluidOutput.getFluid().getFluid() == fluid;
}
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
FluidStack stored = fluidOutput.getFluid();
if (stored == null || stored.amount <= 0) return null;
if (stored.getFluid() != resource.getFluid()) return null;
int removable = Math.min(stored.amount, resource.amount);
FluidStack out = new FluidStack(stored.getFluid(), removable);
if (doDrain) {
stored.amount -= removable;
if (stored.amount <= 0) {
fluidOutput.setFluid(null);
}
}
return out;
}
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
FluidStack stored = fluidOutput.getFluid();
if (stored == null || stored.amount <= 0) return null;
int removable = Math.min(stored.amount, maxDrain);
FluidStack out = new FluidStack(stored.getFluid(), removable);
if (doDrain) {
stored.amount -= removable;
if (stored.amount <= 0) {
fluidOutput.setFluid(null);
}
markDirty();
}
return out;
}
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
return new FluidTankInfo[] { fluidOutput.getInfo() };
}
public static final UITexture CLUSTER_SLOT_BACKGROUND = AdaptableUITexture.builder()
.location("avaritia", "gui/slot/cluster_background.png").imageSize(16, 16).build();
@Override
public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) {
IItemHandlerModifiable inv = new InvWrapper(this);
syncManager.registerSlotGroup("input", 1, 150);
syncManager.registerSlotGroup("output", 1, false);
// spotless:off
return new ModularPanel("ClusterOpener")
.size(178, 152)
.padding(8)
.child(new Column()
.sizeRel(1)
.expanded()
.child(new TextWidget<>(getInventoryName()).height(16).alignX(0.5f).align(Alignment.TopCenter))
.child(new Row().widthRel(1)
.alignX(0.5f)
.expanded()
.child(new ItemSlot()
.alignY(0.5f)
.leftRel(0.5f, -18, 0.5f)
.slot(new ModularSlot(inv, 0).slotGroup("input"))
.background(GuiTextures.SLOT_ITEM, CLUSTER_SLOT_BACKGROUND))
.child(new ItemSlot()
.alignY(0.5f)
.leftRel(0.5f, 18, 0.5f)
.slot(new ModularSlot(inv, 1).slotGroup("output").accessibility(false, false)))
.child(new FluidSlot()
.alignY(0.5f)
.leftRel(0.5f, 36, 0.5f)
.syncHandler(fluidOutput)))
.child(new Row()
.widthRel(1)
.height(76)
.alignX(0.5f)
.child(SlotGroupWidget.playerInventory(false))));
// spotless:on
}
}
@@ -43,6 +43,7 @@ item.avaritia_fracturedore.name=Unknown Fractured Ore
item.avaritia_fracturedore.prefix=Fractured
item.avaritia_mattercluster.name=Matter Cluster
item.avaritia_mattercluster.full.name=Critical Matter Cluster
item.avaritia_mattercluster.veryfull.name=Super-Critical Matter Cluster
item.morvinabox.name=Morv-In-A-Box (WIP)(WILL LIGHT YOU ON FIRE)
item.avaritia.comb.nerfed.name=Nerfed Comb
item.avaritia.comb.cosmic.name=Cosmic Comb
@@ -67,6 +68,7 @@ tile.alfheim_deadrock1.name=Deadrock Brick
tile.alfheim_deadrock2.name=Mossy Deadrock Brick
tile.alfheim_deadrock3.name=Cracked Deadrock Brick
tile.alfheim_deadrock4.name=Chiselled Deadrock
tile.cluster_opener.name=Matter Cluster Decompressor
#
# Tooltips
tooltip.armok.desc=Always contains maximum Life Essence
@@ -83,10 +85,14 @@ tooltip.starfuel.desc=The light of the cosmos in a convenient chunk of earth
tooltip.skullfire_sword.desc=Beheads skeletons and scorches them black.
tooltip.matter_cluster.desc=Right click to deconstruct.
tooltip.matter_cluster.desc2=Hold SHIFT for contents.
tooltip.matter_cluster.desc3=Use a Matter Cluster Decompressor for large clusters.
tooltip.matter_cluster.counter=items
tooltip.morvinabox.desc=Instant housing
tooltip.morvinabox.subdesc=In Canada, Morvy comes in bags.
tooltip.claybalance.desc=UNLIMITED BALANCE!!!!
tooltip.matter-cluster-decompressor.line1=Extracts items from Matter Clusters.
tooltip.matter-cluster-decompressor.line2=Only GT and AE can pull items from decompressors.
tooltip.matter-cluster-decompressor.line3=Fluid drops will be converted to fluids automatically.
#
# Achievements
achievement.avaritia:crystal_matrix=The First Seal
Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

@@ -0,0 +1,17 @@
{
"animation": {
"frametime": 2,
"frames": [
0,
0,
1,
2,
3,
3,
2,
2,
1,
1
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B