This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/EnergonRelics.java

214 lines
11 KiB
Java
Raw Normal View History

2020-07-13 20:37:21 +00:00
package com.thebrokenrail.energonrelics;
2020-07-22 18:07:29 +00:00
import com.thebrokenrail.energonrelics.block.BlockBreakerBlock;
2020-07-26 00:09:03 +00:00
import com.thebrokenrail.energonrelics.block.CreativeEnergySourceBlock;
2020-07-15 22:44:49 +00:00
import com.thebrokenrail.energonrelics.block.DefensiveLaserBlock;
2020-07-26 16:14:51 +00:00
import com.thebrokenrail.energonrelics.block.HolographicSkyBlock;
2020-07-30 02:51:29 +00:00
import com.thebrokenrail.energonrelics.block.InfuserBlock;
2020-08-16 03:01:24 +00:00
import com.thebrokenrail.energonrelics.block.PhaseShifterBlock;
2020-07-29 01:46:04 +00:00
import com.thebrokenrail.energonrelics.block.lightning.LightningRodBaseBlock;
2020-07-23 23:31:02 +00:00
import com.thebrokenrail.energonrelics.block.forcefield.ForcefieldProjectorBlock;
2020-07-28 20:46:34 +00:00
import com.thebrokenrail.energonrelics.block.forcefield.laser.IndustrialLaserProjectorBlock;
import com.thebrokenrail.energonrelics.block.forcefield.laser.IndustrialLaserBlock;
import com.thebrokenrail.energonrelics.block.forcefield.beam.RepulsorBeamBlock;
import com.thebrokenrail.energonrelics.block.forcefield.beam.TractorBeamBlock;
import com.thebrokenrail.energonrelics.block.forcefield.beam.TractorBeamProjectorBlock;
2020-07-28 03:10:16 +00:00
import com.thebrokenrail.energonrelics.block.forcefield.ForcefieldBlock;
2020-07-29 01:46:04 +00:00
import com.thebrokenrail.energonrelics.block.lightning.LightningRodBlock;
2020-07-28 03:10:16 +00:00
import com.thebrokenrail.energonrelics.block.misc.VeridiumBlockBlock;
2020-08-01 20:22:32 +00:00
import com.thebrokenrail.energonrelics.block.portal.EnergizedObsidianBlock;
import com.thebrokenrail.energonrelics.block.portal.EnergyBeamBlock;
import com.thebrokenrail.energonrelics.block.portal.EnergyPortalBlock;
import com.thebrokenrail.energonrelics.block.portal.EnergyProjectorBlock;
2020-07-22 01:23:33 +00:00
import com.thebrokenrail.energonrelics.block.structure.StructureGeneratorBlock;
2020-07-26 23:05:59 +00:00
import com.thebrokenrail.energonrelics.block.misc.ThermalGlassBlock;
2020-07-13 20:37:21 +00:00
import com.thebrokenrail.energonrelics.block.battery.ActiveBatteryControllerBlock;
import com.thebrokenrail.energonrelics.block.reactor.ReactorControllerBlock;
import com.thebrokenrail.energonrelics.block.reactor.ReactorCoreBlock;
import com.thebrokenrail.energonrelics.block.reactor.ReactorInputBlock;
2020-07-26 23:05:59 +00:00
import com.thebrokenrail.energonrelics.block.misc.ThermalCasingBlock;
2020-07-14 01:49:40 +00:00
import com.thebrokenrail.energonrelics.block.battery.PassiveBatteryControllerBlock;
2020-07-13 20:37:21 +00:00
import com.thebrokenrail.energonrelics.block.battery.BatteryCoreBlock;
import com.thebrokenrail.energonrelics.block.EnergonLightBlock;
import com.thebrokenrail.energonrelics.block.SolarPanelBlock;
import com.thebrokenrail.energonrelics.block.SwitchBlock;
2020-08-04 17:06:11 +00:00
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
2020-08-20 23:03:47 +00:00
import com.thebrokenrail.energonrelics.feature.CustomFeatures;
2020-07-13 20:37:21 +00:00
import com.thebrokenrail.energonrelics.item.MultimeterItem;
import com.thebrokenrail.energonrelics.item.NetworkChipItem;
2020-07-22 22:31:22 +00:00
import com.thebrokenrail.energonrelics.potion.CustomPotions;
2020-07-23 20:02:24 +00:00
import com.thebrokenrail.energonrelics.recipe.DuplicateNetworkChipRecipe;
2020-07-13 20:37:21 +00:00
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
2020-07-28 20:38:21 +00:00
import net.minecraft.block.MaterialColor;
2020-07-13 20:37:21 +00:00
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
2020-07-23 20:02:24 +00:00
import net.minecraft.recipe.SpecialRecipeSerializer;
2020-07-25 17:34:16 +00:00
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvent;
2020-07-13 20:37:21 +00:00
import net.minecraft.util.Identifier;
2020-08-04 00:15:17 +00:00
import net.minecraft.util.Rarity;
2020-07-25 17:34:16 +00:00
import net.minecraft.util.math.BlockPos;
2020-07-13 20:37:21 +00:00
import net.minecraft.util.registry.Registry;
2020-07-25 17:34:16 +00:00
import net.minecraft.world.World;
2020-07-13 20:37:21 +00:00
2020-08-04 18:15:24 +00:00
public final class EnergonRelics implements ModInitializer {
2020-07-13 20:37:21 +00:00
public static final String NAMESPACE = "energonrelics";
2020-08-20 23:03:47 +00:00
public static final class Items {
static {
if (ItemGroup.BUILDING_BLOCKS == null) {
throw new RuntimeException("Items Loaded Too Early");
}
}
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
public static final NetworkChipItem NETWORK_CHIP_ITEM;
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build(new Identifier(NAMESPACE, "item_group"), () -> new ItemStack(Items.NETWORK_CHIP_ITEM));
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
static {
NETWORK_CHIP_ITEM = new NetworkChipItem();
}
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
public static final MultimeterItem MULTIMETER = new MultimeterItem();
public static final Item VERIDIUM_ORB = new Item(new Item.Settings().group(ITEM_GROUP).rarity(Rarity.UNCOMMON));
public static final Item VERIDIUM_POWDER = new Item(new Item.Settings().group(ITEM_GROUP));
public static final Item DEFENSIVE_LASER_CORE = new Item(new Item.Settings().group(ITEM_GROUP));
public static final Item CIRCUIT_BOARD = new Item(new Item.Settings().group(ITEM_GROUP));
public static final Item VERIDIUM_INGOT = new Item(new Item.Settings().group(ITEM_GROUP));
}
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
public static final class Blocks {
public static final EnergonLightBlock ENERGON_LIGHT = new EnergonLightBlock();
public static final SolarPanelBlock SOLAR_PANEL = new SolarPanelBlock();
public static final SwitchBlock SWITCH = new SwitchBlock();
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
public static final ThermalCasingBlock THERMAL_CASING = new ThermalCasingBlock();
public static final ThermalGlassBlock THERMAL_GLASS = new ThermalGlassBlock();
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
public static final BatteryCoreBlock BATTERY_CORE = new BatteryCoreBlock();
public static final PassiveBatteryControllerBlock PASSIVE_BATTERY_CONTROLLER = new PassiveBatteryControllerBlock();
public static final ActiveBatteryControllerBlock ACTIVE_BATTERY_CONTROLLER = new ActiveBatteryControllerBlock();
2020-07-15 22:44:49 +00:00
2020-08-20 23:03:47 +00:00
public static final ReactorCoreBlock REACTOR_CORE = new ReactorCoreBlock();
public static final ReactorInputBlock REACTOR_INPUT = new ReactorInputBlock();
public static final ReactorControllerBlock REACTOR_CONTROLLER = new ReactorControllerBlock();
2020-07-22 18:07:29 +00:00
2020-08-20 23:03:47 +00:00
public static final SimpleBlock VERIDIUM_ORE = new SimpleBlock(FabricBlockSettings.of(Material.STONE).requiresTool().strength(3f, 3f));
public static final SimpleBlock VERIDIUM_BLOCK = new VeridiumBlockBlock();
2020-07-22 21:03:32 +00:00
2020-08-20 23:03:47 +00:00
public static final DefensiveLaserBlock DEFENSIVE_LASER = new DefensiveLaserBlock();
public static final BlockBreakerBlock BLOCK_BREAKER = new BlockBreakerBlock();
2020-07-23 17:39:40 +00:00
2020-08-20 23:03:47 +00:00
public static final LightningRodBaseBlock LIGHTNING_ROD_BASE = new LightningRodBaseBlock();
public static final LightningRodBlock LIGHTNING_ROD = new LightningRodBlock();
2020-07-23 20:02:24 +00:00
2020-08-20 23:03:47 +00:00
public static final ForcefieldBlock FORCEFIELD = new ForcefieldBlock();
public static final ForcefieldProjectorBlock FORCEFIELD_PROJECTOR = new ForcefieldProjectorBlock();
2020-07-28 20:38:21 +00:00
2020-08-20 23:03:47 +00:00
public static final TractorBeamBlock TRACTOR_BEAM = new TractorBeamBlock();
public static final RepulsorBeamBlock REPULSOR_BEAM = new RepulsorBeamBlock();
public static final TractorBeamProjectorBlock TRACTOR_BEAM_PROJECTOR = new TractorBeamProjectorBlock();
2020-07-23 23:31:02 +00:00
2020-08-20 23:03:47 +00:00
public static final IndustrialLaserBlock INDUSTRIAL_LASER = new IndustrialLaserBlock();
public static final IndustrialLaserProjectorBlock INDUSTRIAL_LASER_PROJECTOR = new IndustrialLaserProjectorBlock();
2020-07-28 03:10:16 +00:00
2020-08-20 23:03:47 +00:00
public static final CreativeEnergySourceBlock CREATIVE_ENERGY_SOURCE = new CreativeEnergySourceBlock();
public static final HolographicSkyBlock HOLOGRAPHIC_SKY = new HolographicSkyBlock();
public static final InfuserBlock INFUSER = new InfuserBlock();
2020-07-28 20:38:21 +00:00
2020-08-20 23:03:47 +00:00
public static final EnergizedObsidianBlock ENERGIZED_OBSIDIAN = new EnergizedObsidianBlock();
public static final EnergyBeamBlock ENERGY_BEAM = new EnergyBeamBlock();
public static final EnergyPortalBlock ENERGY_PORTAL = new EnergyPortalBlock();
public static final EnergyProjectorBlock ENERGY_PROJECTOR = new EnergyProjectorBlock();
2020-07-25 17:34:16 +00:00
2020-08-20 23:03:47 +00:00
public static final PhaseShifterBlock PHASE_SHIFTER = new PhaseShifterBlock();
}
2020-07-26 00:09:03 +00:00
2020-08-20 23:03:47 +00:00
public static final class Extras {
public static final SpecialRecipeSerializer<DuplicateNetworkChipRecipe> DUPLICATE_NETWORK_CHIP_RECIPE = new SpecialRecipeSerializer<>(DuplicateNetworkChipRecipe::new);
2020-07-26 16:14:51 +00:00
2020-08-20 23:03:47 +00:00
public static final Material FIELD_MATERIAL = new Material.Builder(MaterialColor.CLEAR).replaceable().build();
2020-07-30 02:51:29 +00:00
2020-08-20 23:03:47 +00:00
private static final Identifier BEEP_SOUND_ID = new Identifier(NAMESPACE, "beep");
private static final SoundEvent BEEP_SOUND_EVENT = new SoundEvent(BEEP_SOUND_ID);
2020-08-01 20:22:32 +00:00
2020-08-20 23:03:47 +00:00
public static void playBeep(World world, BlockPos pos) {
if (!world.isClient()) {
world.playSound(null, pos, BEEP_SOUND_EVENT, SoundCategory.BLOCKS, 0.3f, 1f);
}
}
}
2020-08-16 03:01:24 +00:00
2020-07-13 20:37:21 +00:00
@Override
public void onInitialize() {
2020-08-20 23:03:47 +00:00
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "veridium_ingot"), Items.VERIDIUM_INGOT);
Blocks.VERIDIUM_ORE.register("veridium_ore");
Blocks.VERIDIUM_BLOCK.register("veridium_block");
CustomFeatures.register();
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "veridium_powder"), Items.VERIDIUM_POWDER);
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "veridium_orb"), Items.VERIDIUM_ORB);
2020-08-01 20:54:23 +00:00
2020-08-20 23:03:47 +00:00
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "network_chip"), Items.NETWORK_CHIP_ITEM);
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "multimeter"), Items.MULTIMETER);
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "circuit_board"), Items.CIRCUIT_BOARD);
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
Blocks.ENERGON_LIGHT.register("energon_light");
Blocks.SOLAR_PANEL.register("solar_panel");
Blocks.SWITCH.register("switch");
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
Blocks.THERMAL_CASING.register("thermal_casing");
Blocks.THERMAL_GLASS.register("thermal_glass");
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
Blocks.BATTERY_CORE.register("battery_core");
Blocks.PASSIVE_BATTERY_CONTROLLER.register("passive_battery_controller");
Blocks.ACTIVE_BATTERY_CONTROLLER.register("active_battery_controller");
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
Blocks.REACTOR_CORE.register("reactor_core");
Blocks.REACTOR_INPUT.register("reactor_input");
Blocks.REACTOR_CONTROLLER.register("reactor_controller");
2020-07-13 20:37:21 +00:00
2020-08-20 23:03:47 +00:00
Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "defensive_laser_core"), Items.DEFENSIVE_LASER_CORE);
Blocks.DEFENSIVE_LASER.register("defensive_laser");
2020-07-19 19:12:39 +00:00
2020-08-15 18:26:33 +00:00
StructureGeneratorBlock.registerBlocks();
2020-07-22 21:03:32 +00:00
2020-08-20 23:03:47 +00:00
Blocks.BLOCK_BREAKER.register("block_breaker");
2020-07-22 18:07:29 +00:00
2020-07-22 22:31:22 +00:00
CustomPotions.register();
2020-07-23 17:39:40 +00:00
2020-08-20 23:03:47 +00:00
Blocks.LIGHTNING_ROD_BASE.register("lightning_rod_base");
Blocks.LIGHTNING_ROD.register("lightning_rod");
2020-07-23 20:02:24 +00:00
2020-08-20 23:03:47 +00:00
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(NAMESPACE, "duplicate_network_chip"), Extras.DUPLICATE_NETWORK_CHIP_RECIPE);
2020-07-23 23:31:02 +00:00
2020-08-20 23:03:47 +00:00
Blocks.FORCEFIELD.register("forcefield");
Blocks.FORCEFIELD_PROJECTOR.register("forcefield_projector");
2020-07-25 17:34:16 +00:00
2020-08-20 23:03:47 +00:00
Blocks.TRACTOR_BEAM.register("tractor_beam");
Blocks.REPULSOR_BEAM.register("repulsor_beam");
Blocks.TRACTOR_BEAM_PROJECTOR.register("tractor_beam_projector");
2020-07-28 03:10:16 +00:00
2020-08-20 23:03:47 +00:00
Blocks.INDUSTRIAL_LASER.register("industrial_laser");
Blocks.INDUSTRIAL_LASER_PROJECTOR.register("industrial_laser_projector");
2020-07-28 20:38:21 +00:00
2020-08-20 23:03:47 +00:00
Registry.register(Registry.SOUND_EVENT, Extras.BEEP_SOUND_ID, Extras.BEEP_SOUND_EVENT);
2020-07-26 00:09:03 +00:00
2020-08-20 23:03:47 +00:00
Blocks.CREATIVE_ENERGY_SOURCE.register("creative_energy_source");
2020-07-26 16:14:51 +00:00
2020-08-20 23:03:47 +00:00
Blocks.HOLOGRAPHIC_SKY.register("holographic_sky");
2020-07-30 02:51:29 +00:00
2020-08-20 23:03:47 +00:00
Blocks.INFUSER.register("infuser");
2020-08-01 20:22:32 +00:00
2020-08-20 23:03:47 +00:00
Blocks.ENERGIZED_OBSIDIAN.register("energized_obsidian");
Blocks.ENERGY_BEAM.register("energy_beam");
Blocks.ENERGY_PORTAL.register("energy_portal");
Blocks.ENERGY_PROJECTOR.register("energy_projector");
2020-08-16 03:01:24 +00:00
2020-08-20 23:03:47 +00:00
Blocks.PHASE_SHIFTER.register("phase_shifter");
2020-07-13 20:37:21 +00:00
}
}