Compare commits

...
32 Commits
Author SHA1 Message Date
Martin Robertz 3cd91b0112 update 2025-04-28 20:37:39 +02:00
Martin Robertz 29f8752c98 Merge remote-tracking branch 'origin/fused-quartz-blast-resistance' into dev
# Conflicts:
#	dependencies.gradle
2025-04-28 20:37:07 +02:00
glowredman 41657d44b1 Make Fused Quartz blast resistance configurable 2025-04-27 20:06:41 +02:00
Martin Robertz 4d2ace0d3f Merge remote-tracking branch 'dibbydoda/automatable-weather-obelisk' into dev 2025-04-25 13:46:07 +02:00
Martin Robertz 38845890c1 update 2025-04-25 13:46:01 +02:00
Martin Robertz be92550e42 Merge branch 'master' into automatable-weather-obelisk 2025-04-25 13:44:27 +02:00
Maya 63971381cc update 2025-04-24 17:20:42 -05:00
__felix__and__felix__ 09238b09ef Change hazmat Optional decorators' modid from gregtech to gregtech_nh to add gt6 compat (#191)
Co-authored-by: __felix__ <134875831+48a3efa65c881ef567345b17f3910e06@users.noreply.github.com>
2025-04-24 17:19:59 -05:00
dibbydoda 6e5087dac1 sa 2025-04-22 20:53:48 +10:00
dibbydoda a12e5f37ba tweak cooldown logic and timing 2025-04-22 20:53:10 +10:00
dibbydoda d023c347cb Remove unused weather obelisk config items 2025-04-22 20:47:47 +10:00
dibbydoda 56a642cebf sa 2025-04-22 19:55:04 +10:00
dibbydoda 68bc2116b4 Rename feature to launch on redstone 2025-04-22 19:42:36 +10:00
dibbydoda 3e72fe00ac Add serverside cooldown to prevent double launch 2025-04-22 19:38:52 +10:00
dibbydoda efbe0ba259 Save control mode state 2025-04-22 19:33:54 +10:00
dibbydoda 0ef9ce80ea Logic for serverside startTask() 2025-04-22 18:48:35 +10:00
dibbydoda bc7975f26c Remove unused return type 2025-04-22 18:47:27 +10:00
dibbydoda b3acdd8f35 Server notify client of startTask() 2025-04-22 18:46:54 +10:00
dibbydoda 559c64e82c PacketActivateWeather now can start/stop on client or server 2025-04-22 18:46:01 +10:00
dibbydoda 2fe6acc762 Make UI elements and lang entries 2025-04-22 18:44:15 +10:00
dibbydoda 80c83d3fce Create Packet for Relaying Control Mode 2025-04-22 18:44:15 +10:00
Maya 32556e078e update 2025-04-08 16:28:20 -05:00
Niclas Klugmann ace514f628 Move End Steel/ Stellar Armor to GT Hazard API (#189) 2025-04-08 16:27:01 -05:00
Niclas Klugmann 0102b89c33 fix trackman's goggles config (#188) 2025-03-22 14:45:52 +00:00
Maya b65afde754 fix dependencies 2025-03-22 09:01:45 -05:00
Maya 4a0a427186 update 2025-03-22 08:55:17 -05:00
Niclas KlugmannandMaya e04e2e3411 Add trackman's goggles upgrade support to the Dark Helm (#186)
Co-authored-by: Maya <[email protected]>
2025-03-22 08:54:08 -05:00
Niclas Klugmann 316db4bd77 Fix naturalist's eyes (#187) 2025-03-22 08:32:29 -05:00
Maya f43936c29a update 2025-02-14 11:57:41 -06:00
Maya c6471ed6b0 Mark EnderCore as a required dependency (#185) 2025-02-14 17:57:27 +00:00
Maya 654b95da1a update 2025-02-03 15:05:58 -06:00
Dioxop d70263f3af Adding "show range" button to multiple machines (#184) 2025-02-03 15:04:20 -06:00
52 changed files with 820 additions and 107 deletions

No files matched your search

+1
View File
@@ -27,3 +27,4 @@ whitelist.json
*.iws
src/main/resources/mixins.*.json
*.bat
layout.json
+14 -12
View File
@@ -2,21 +2,23 @@
dependencies {
api('com.github.GTNewHorizons:EnderCore:0.4.6:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ForestryMC:4.10.1:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.8-GTNH:dev')
api("com.github.GTNewHorizons:GTNHLib:0.6.0:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:dev')
compileOnly('com.github.GTNewHorizons:ForestryMC:4.10.7:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.40-GTNH:dev')
api("com.github.GTNewHorizons:GTNHLib:0.6.21:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.42:dev')
api('curse.maven:cofh-lib-220333:2388748') // https://www.curseforge.com/minecraft/mc-mods/cofh-lib/files/2388748
shadowImplementation('cglib:cglib-nodep:3.3.0')
api("com.github.GTNewHorizons:TinkersConstruct:1.13.21-GTNH:dev")
compileOnly('com.github.GTNewHorizons:waila:1.8.2:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-516-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:waila:1.8.4:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-586-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.40:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.16.0:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.0.5-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.16.0-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.11.1-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.256:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:ModularUI2:2.2.7-1.7.10:dev") {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.16.23:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.1.0-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.16.2-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.11.13-GTNH:api') {transitive = false}
compileOnly('curse.maven:minefactory-reloaded-66672:2366150') // https://www.curseforge.com/minecraft/mc-mods/minefactory-reloaded/files/2366150
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly('curse.maven:ee3-65509:2305023') // https://www.curseforge.com/minecraft/mc-mods/ee3/files/2305023
@@ -24,5 +26,5 @@ dependencies {
compileOnly(rfg.deobf('curse.maven:mekanism-268560:2475797')) // https://www.curseforge.com/minecraft/mc-mods/mekanism/files/2475797
compileOnly(rfg.deobf('maven.modrinth:immibis-microblocks:59.1.2')) // https://modrinth.com/mod/immibis-microblocks/version/59.1.2
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta28:api') {transitive = false}
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta40:api') {transitive = false}
}
+1 -1
View File
@@ -14,7 +14,7 @@ modId = EnderIO
modGroup = crazypants.enderio
# Whether to use modGroup as the maven publishing group.
# Due to a history of using JitPack, the default is com.github.GTNewHorizons for all mods.
# When false, com.github.GTNewHorizons is used.
useModGroupForPublishing = false
# Updates your build.gradle and settings.gradle automatically whenever an update is available.
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+2 -3
View File
@@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -206,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.30'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.38'
}
@@ -107,7 +107,7 @@ import crazypants.enderio.machine.power.BlockCapacitorBank;
import crazypants.enderio.machine.power.CapBankRenderer2;
import crazypants.enderio.machine.power.CapacitorBankRenderer;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.machine.ranged.RangeRenerer;
import crazypants.enderio.machine.ranged.RangeRenderer;
import crazypants.enderio.machine.reservoir.ReservoirRenderer;
import crazypants.enderio.machine.reservoir.TileReservoir;
import crazypants.enderio.machine.solar.BlockSolarPanel;
@@ -419,7 +419,7 @@ public class ClientProxy extends CommonProxy {
FMLCommonHandler.instance().bus().register(KeyTracker.instance);
RenderingRegistry.registerEntityRenderingHandler(SoundEntity.class, new SoundRenderer());
RenderingRegistry.registerEntityRenderingHandler(RangeEntity.class, new RangeRenerer());
RenderingRegistry.registerEntityRenderingHandler(RangeEntity.class, new RangeRenderer());
MinecraftForge.EVENT_BUS.register(SoundDetector.instance);
FMLCommonHandler.instance().bus().register(SoundDetector.instance);
@@ -186,7 +186,7 @@ import crazypants.util.EE3Util;
modid = MODID,
name = MOD_NAME,
version = VERSION,
dependencies = "required-after:CoFHLib@(1.0.3B3,);after:endercore;after:MineFactoryReloaded;after:Forestry;after:Waila@[1.5.8,);after:Thaumcraft;after:appliedenergistics2@[rv2-beta-8,);after:chisel;required-after:gtnhlib@[0.2.10,)",
dependencies = "required-after:CoFHLib@(1.0.3B3,);required-after:endercore;after:MineFactoryReloaded;after:Forestry;after:Waila@[1.5.8,);after:Thaumcraft;after:appliedenergistics2@[rv2-beta-8,);after:chisel;required-after:gtnhlib@[0.2.10,)",
guiFactory = "crazypants.enderio.config.ConfigFactoryEIO")
public class EnderIO {
@@ -208,7 +208,7 @@ public class EnderIO {
public static final Lang lang = new Lang("enderio");
public static final boolean hasLwjgl3 = Loader.isModLoaded("lwjgl3ify");
public static final boolean hasGT5 = Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi_post");
public static final boolean hasGT5 = Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi");
// Materials
public static ItemCapacitor itemBasicCapacitor;
@@ -74,7 +74,6 @@ public final class Config {
public static final Section sectionMobConfig = new Section("Mob Config", "mobconfig");
public static final Section sectionRailConfig = new Section("Rail", "railconfig");
public static final Section sectionEnchantments = new Section("Enchantments", "enchantments");
public static final Section sectionWeather = new Section("Weather", "weather");
public static final Section sectionTelepad = new Section("Telepad", "telepad");
public static final Section sectionInventoryPanel = new Section("InventoryPanel", "inventorypanel");
public static final Section sectionMisc = new Section("Misc", "misc");
@@ -285,6 +284,8 @@ public final class Config {
public static int darkSteelApiaristArmorCost = 10;
public static int darkSteelTrackmanGogglesCost = 10;
public static int darkSteelSwimCost = 10;
public static int darkSteelNightVisionCost = 10;
@@ -542,10 +543,6 @@ public final class Config {
public static boolean spawnGuardStopAllSlimesDebug = false;
public static boolean spawnGuardStopAllSquidSpawning = false;
public static int weatherObeliskClearFluid = 2000;
public static int weatherObeliskRainFluid = 500;
public static int weatherObeliskThunderFluid = 1000;
// Loot Defaults
public static boolean lootDarkSteel = true;
public static boolean lootItemConduitProbe = true;
@@ -598,6 +595,8 @@ public final class Config {
public static boolean strictTPItemChecking = true;
public static float fusedQuartzExplosionResistance = 2000.0f;
public static void load(FMLPreInitializationEvent event) {
PacketHandler.INSTANCE
.registerMessage(PacketConfigSync.class, PacketConfigSync.class, PacketHandler.nextID(), Side.CLIENT);
@@ -1609,6 +1608,14 @@ public final class Config {
darkSteelApiaristArmorCost,
"Number of levels required for the Apiarist Armor upgrade.").getInt(darkSteelApiaristArmorCost);
darkSteelTrackmanGogglesCost = config
.get(
sectionDarkSteel.name,
"darkSteelTrackmanGogglesCost",
darkSteelTrackmanGogglesCost,
"Number of levels required for the Trackman's Goggles upgrade.")
.getInt(darkSteelTrackmanGogglesCost);
darkSteelTravelCost = config.get(
sectionDarkSteel.name,
"darkSteelTravelCost",
@@ -2736,22 +2743,6 @@ public final class Config {
spawnGuardStopAllSquidSpawning,
"When true no squid will be spawned.");
weatherObeliskClearFluid = config.get(
sectionWeather.name,
"weatherObeliskClearFluid",
weatherObeliskClearFluid,
"The fluid required (in mB) to set the world to clear weather").getInt();
weatherObeliskRainFluid = config.get(
sectionWeather.name,
"weatherObeliskRainFluid",
weatherObeliskRainFluid,
"The fluid required (in mB) to set the world to rainy weather").getInt();
weatherObeliskThunderFluid = config.get(
sectionWeather.name,
"weatherObeliskThunderFluid",
weatherObeliskThunderFluid,
"The fluid required (in mB) to set the world to thundering weather").getInt();
// Loot Config
lootDarkSteel = config.getBoolean(
"lootDarkSteel",
@@ -2980,6 +2971,13 @@ public final class Config {
strictTPItemChecking,
"If true, turn on strict checking of item energy checking. This might cause traveling tools from third party mods to fire fake security warnings on server side and not function correctly.")
.getBoolean(strictTPItemChecking);
fusedQuartzExplosionResistance = config.getFloat(
"fusedQuartzExplosionResistance",
sectionMisc.name,
2000.0f,
0.0f,
Float.MAX_VALUE,
"How blast resistant the three Fused Quartz blocks should be.");
}
public static void checkYetaAccess() {
@@ -25,16 +25,19 @@ import crazypants.enderio.config.Config;
import crazypants.enderio.item.PacketMagnetState.SlotType;
import crazypants.enderio.item.darksteel.DarkSteelController;
import crazypants.enderio.item.darksteel.DarkSteelItems;
import crazypants.enderio.item.darksteel.ItemDarkSteelArmor;
import crazypants.enderio.item.darksteel.PacketUpgradeState;
import crazypants.enderio.item.darksteel.PacketUpgradeState.Type;
import crazypants.enderio.item.darksteel.SoundDetector;
import crazypants.enderio.item.darksteel.upgrade.JumpUpgrade;
import crazypants.enderio.item.darksteel.upgrade.SoundDetectorUpgrade;
import crazypants.enderio.item.darksteel.upgrade.SpeedUpgrade;
import crazypants.enderio.item.darksteel.upgrade.TrackmanGogglesUpgrade;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.teleport.TravelController;
import crazypants.enderio.thaumcraft.GogglesOfRevealingUpgrade;
import crazypants.util.BaublesUtil;
import mods.railcraft.api.core.items.IToolGoggles;
public class KeyTracker {
@@ -54,6 +57,8 @@ public class KeyTracker {
private final KeyBinding gogglesKey;
private final KeyBinding trackmansGogglesKey;
private final KeyBinding yetaWrenchMode;
private final KeyBinding magnetKey;
@@ -84,6 +89,12 @@ public class KeyTracker {
EnderIO.lang.localize("category.darksteelarmor"));
ClientRegistry.registerKeyBinding(gogglesKey);
trackmansGogglesKey = new KeyBinding(
EnderIO.lang.localize("keybind.trackmansgoggles"),
Keyboard.KEY_NONE,
EnderIO.lang.localize("category.darksteelarmor"));
ClientRegistry.registerKeyBinding(trackmansGogglesKey);
stepAssistKey = new KeyBinding(
EnderIO.lang.localize("keybind.stepassist"),
Keyboard.KEY_NONE,
@@ -128,6 +139,7 @@ public class KeyTracker {
handleNightVision();
handleYetaWrench();
handleGoggles();
handleTrackmanGoggles();
handleStepAssist();
handleSpeed();
handleJump();
@@ -232,6 +244,22 @@ public class KeyTracker {
}
}
private void handleTrackmanGoggles() {
if (trackmansGogglesKey.isPressed()) {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (!TrackmanGogglesUpgrade.isUpgradeEquipped(player)) {
return;
}
ItemStack helmet = player.getEquipmentInSlot(4);
((ItemDarkSteelArmor) helmet.getItem()).incrementAura(helmet);
IToolGoggles.displaySwitchMessage(
Minecraft.getMinecraft().theWorld,
Minecraft.getMinecraft().thePlayer,
((ItemDarkSteelArmor) helmet.getItem()).getCurrentAura(helmet));
return;
}
}
private void handleGoggles() {
if (gogglesKey.isPressed()) {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
@@ -33,6 +33,7 @@ import crazypants.enderio.item.darksteel.upgrade.SoundDetectorUpgrade;
import crazypants.enderio.item.darksteel.upgrade.SpeedUpgrade;
import crazypants.enderio.item.darksteel.upgrade.SpoonUpgrade;
import crazypants.enderio.item.darksteel.upgrade.SwimUpgrade;
import crazypants.enderio.item.darksteel.upgrade.TrackmanGogglesUpgrade;
import crazypants.enderio.item.darksteel.upgrade.TravelUpgrade;
import crazypants.enderio.material.Alloy;
import crazypants.enderio.material.endergy.AlloyEndergy;
@@ -75,6 +76,9 @@ public class DarkSteelRecipeManager {
upgrades.add(ApiaristArmorUpgrade.LEGS);
upgrades.add(ApiaristArmorUpgrade.BOOTS);
}
if (Loader.isModLoaded("Railcraft")) {
upgrades.add(TrackmanGogglesUpgrade.INSTANCE);
}
}
@SubscribeEvent
@@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.common.ISpecialArmor;
@@ -34,9 +35,13 @@ import crazypants.enderio.item.darksteel.upgrade.ApiaristArmorUpgrade;
import crazypants.enderio.item.darksteel.upgrade.EnergyUpgrade;
import crazypants.enderio.item.darksteel.upgrade.IDarkSteelUpgrade;
import crazypants.enderio.item.darksteel.upgrade.NaturalistEyeUpgrade;
import crazypants.enderio.item.darksteel.upgrade.TrackmanGogglesUpgrade;
import crazypants.enderio.thaumcraft.GogglesOfRevealingUpgrade;
import forestry.api.apiculture.IArmorApiarist;
import forestry.api.core.IArmorNaturalist;
import mods.railcraft.api.core.items.IToolGoggles;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.items.ItemGoggles.GoggleAura;
import thaumcraft.api.IGoggles;
import thaumcraft.api.IVisDiscountGear;
import thaumcraft.api.aspects.Aspect;
@@ -45,11 +50,12 @@ import thaumcraft.api.nodes.IRevealer;
@InterfaceList({ @Interface(iface = "thaumcraft.api.IGoggles", modid = "Thaumcraft"),
@Interface(iface = "thaumcraft.api.IVisDiscountGear", modid = "Thaumcraft"),
@Interface(iface = "thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft"),
@Interface(iface = "mods.railcraft.api.core.items.IToolGoggles", modid = "Railcraft"),
@Interface(iface = "forestry.api.apiculture.IArmorApiarist", modid = "Forestry"),
@Interface(iface = "forestry.api.core.IArmorNaturalist", modid = "Forestry") })
public class ItemDarkSteelArmor extends ItemArmor
implements IEnergyContainerItem, ISpecialArmor, IAdvancedTooltipProvider, IDarkSteelItem, IGoggles, IRevealer,
IVisDiscountGear, IArmorApiarist, IArmorNaturalist {
IVisDiscountGear, IArmorApiarist, IArmorNaturalist, IToolGoggles {
public static final ArmorMaterial MATERIAL = EnumHelper
.addArmorMaterial("darkSteel", 35, new int[] { 2, 6, 5, 2 }, 15);
@@ -322,9 +328,45 @@ public class ItemDarkSteelArmor extends ItemArmor
@Override
@Method(modid = "Forestry")
public boolean canSeePollination(EntityPlayer player, ItemStack armor, boolean doSee) {
if (armor == null || DarkSteelItems.isArmorPart(armor.getItem(), 0)) {
if (armor == null || !DarkSteelItems.isArmorPart(armor.getItem(), 0)) {
return false;
}
return NaturalistEyeUpgrade.isUpgradeEquipped(player);
}
// Railcraft
public void incrementAura(ItemStack goggles) {
if (goggles != null && goggles.getItem() instanceof ItemDarkSteelArmor
&& DarkSteelItems.isArmorPart(goggles.getItem(), 0)) {
NBTTagCompound data = goggles.getTagCompound();
if (data == null) {
data = new NBTTagCompound();
goggles.setTagCompound(data);
}
byte aura = data.getByte("aura");
aura++;
if (aura >= GoggleAura.VALUES.length) aura = 0;
data.setByte("aura", aura);
if (this.getCurrentAura(goggles) == GoggleAura.TRACKING && !RailcraftConfig.isTrackingAuraEnabled()) {
incrementAura(goggles);
}
}
}
@Override
@Method(modid = "Railcraft")
public GoggleAura getCurrentAura(ItemStack goggles) {
if (TrackmanGogglesUpgrade.loadFromItem(goggles) != null) {
NBTTagCompound data = goggles.getTagCompound();
if (data != null) {
return GoggleAura.VALUES[data.getByte("aura")];
} else {
return GoggleAura.NONE;
}
} else {
return GoggleAura.NONE;
}
}
}
@@ -8,13 +8,17 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.item.darksteel.IDarkSteelItem.IEndSteelItem;
import crazypants.enderio.item.darksteel.upgrade.EnergyUpgrade;
import crazypants.enderio.item.darksteel.upgrade.IDarkSteelUpgrade;
import gregtech.api.hazards.Hazard;
import gregtech.api.hazards.IHazardProtector;
public class ItemEndSteelArmor extends ItemDarkSteelArmor implements IEndSteelItem {
@Optional.InterfaceList({ @Optional.Interface(iface = "gregtech.api.hazards.IHazardProtector", modid = "gregtech_nh") })
public class ItemEndSteelArmor extends ItemDarkSteelArmor implements IEndSteelItem, IHazardProtector {
public static final ArmorMaterial MATERIAL = EnumHelper
.addArmorMaterial("endSteel", 50, new int[] { 4, 7, 10, 5 }, 25);
@@ -77,4 +81,11 @@ public class ItemEndSteelArmor extends ItemDarkSteelArmor implements IEndSteelIt
par3List.add(is);
}
/// GT5 Hazmat protection
@Optional.Method(modid = "gregtech_nh")
@Override
public boolean protectsAgainst(ItemStack itemStack, Hazard hazard) {
return true;
}
}
@@ -8,13 +8,17 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.item.darksteel.IDarkSteelItem.IStellarItem;
import crazypants.enderio.item.darksteel.upgrade.EnergyUpgrade;
import crazypants.enderio.item.darksteel.upgrade.IDarkSteelUpgrade;
import gregtech.api.hazards.Hazard;
import gregtech.api.hazards.IHazardProtector;
public class ItemStellarArmor extends ItemDarkSteelArmor implements IStellarItem {
@Optional.InterfaceList({ @Optional.Interface(iface = "gregtech.api.hazards.IHazardProtector", modid = "gregtech_nh") })
public class ItemStellarArmor extends ItemDarkSteelArmor implements IStellarItem, IHazardProtector {
public static final ArmorMaterial MATERIAL = EnumHelper
.addArmorMaterial("stellarAlloy", 75, new int[] { 8, 14, 18, 7 }, 25);
@@ -78,4 +82,11 @@ public class ItemStellarArmor extends ItemDarkSteelArmor implements IStellarItem
par3List.add(is);
}
/// GT5 Hazmat protection
@Optional.Method(modid = "gregtech_nh")
@Override
public boolean protectsAgainst(ItemStack itemStack, Hazard hazard) {
return true;
}
}
@@ -0,0 +1,85 @@
package crazypants.enderio.item.darksteel.upgrade;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import cpw.mods.fml.common.registry.GameRegistry;
import crazypants.enderio.config.Config;
import crazypants.enderio.item.darksteel.DarkSteelItems;
public class TrackmanGogglesUpgrade extends AbstractUpgrade {
private static String UPGRADE_NAME = "trackmansGoggles";
public static final TrackmanGogglesUpgrade INSTANCE = new TrackmanGogglesUpgrade();
public static ItemStack getGoggles() {
Item i = GameRegistry.findItem("Railcraft", "armor.goggles");
if (i != null) {
return new ItemStack(i);
}
return null;
}
public static TrackmanGogglesUpgrade loadFromItem(ItemStack stack) {
if (stack == null) {
return null;
}
if (stack.stackTagCompound == null) {
return null;
}
if (!stack.stackTagCompound.hasKey(KEY_UPGRADE_PREFIX + UPGRADE_NAME)) {
return null;
}
return new TrackmanGogglesUpgrade(
(NBTTagCompound) stack.stackTagCompound.getTag(KEY_UPGRADE_PREFIX + UPGRADE_NAME));
}
public static boolean isUpgradeEquipped(EntityPlayer player) {
ItemStack helmet = player.getEquipmentInSlot(4);
return TrackmanGogglesUpgrade.loadFromItem(helmet) != null;
}
public TrackmanGogglesUpgrade(NBTTagCompound tag) {
super(UPGRADE_NAME, tag);
}
public TrackmanGogglesUpgrade() {
super(
UPGRADE_NAME,
"enderio.darksteel.upgrade.trackmansGoggles",
getGoggles(),
Config.darkSteelTrackmanGogglesCost);
}
@Override
public boolean canAddToItem(ItemStack stack) {
if (stack == null || !DarkSteelItems.isArmorPart(stack.getItem(), 0) || getUpgradeItem() == null) {
return false;
}
TrackmanGogglesUpgrade up = loadFromItem(stack);
return up == null;
}
@Override
public void writeUpgradeToNBT(NBTTagCompound upgradeRoot) {}
@Override
public ItemStack getUpgradeItem() {
if (upgradeItem != null) {
return upgradeItem;
}
upgradeItem = getGoggles();
return upgradeItem;
}
@Override
public String getUpgradeItemName() {
if (getUpgradeItem() == null) {
return "Trackman's Helmet";
}
return super.getUpgradeItemName();
}
}
@@ -1,5 +1,7 @@
package crazypants.enderio.machine.farm;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
@@ -10,9 +12,11 @@ import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.vecmath.Vector4f;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.IconEIO;
@@ -20,11 +24,42 @@ import crazypants.enderio.machine.gui.GuiPoweredMachineBase;
public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
private static final int RANGE_ID = 8738924;
private static final int LOCK_ID = 1234;
private final ToggleButton showRangeB;
public GuiFarmStation(InventoryPlayer par1InventoryPlayer, TileFarmStation machine) {
super(machine, new FarmStationContainer(par1InventoryPlayer, machine), "farmStation");
int x = getXSize() - 5 - BUTTON_SIZE / 2;
int y = getGuiTop() + 5;
getRedstoneBtn().setPosition(x, y);
y += BUTTON_SIZE + 2;
getConfigBtn().setPosition(x, y);
y += BUTTON_SIZE + 2;
showRangeB = new ToggleButton(this, RANGE_ID, x, y, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(BUTTON_SIZE, BUTTON_SIZE);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
setYSize(ySize + 3);
setXSize(xSize + 8);
}
@Override
protected int getPowerU() {
return 184;
}
@SuppressWarnings("unchecked")
@@ -32,6 +67,9 @@ public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
public void initGui() {
super.initGui();
showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());
int x = getGuiLeft() + 36;
int y = getGuiTop() + 43;
@@ -94,7 +132,10 @@ public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
protected void actionPerformed(GuiButton b) {
if (b.id >= LOCK_ID + TileFarmStation.minSupSlot && b.id <= LOCK_ID + TileFarmStation.maxSupSlot) {
getTileEntity().toggleLockedState(b.id - LOCK_ID);
} else if (b.id == RANGE_ID) {
getTileEntity().setShowRange(showRangeB.isSelected());
}
super.actionPerformed(b);
}
@@ -15,12 +15,17 @@ import net.minecraft.item.ItemShears;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.EnumSkyBlock;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.config.Config;
@@ -32,13 +37,52 @@ import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.farm.farmers.FarmersCommune;
import crazypants.enderio.machine.farm.farmers.IHarvestResult;
import crazypants.enderio.machine.farm.farmers.RubberTreeFarmerIC2;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.power.BasicCapacitor;
import crazypants.enderio.tool.ArrayMappingTool;
public class TileFarmStation extends AbstractPoweredTaskEntity {
public class TileFarmStation extends AbstractPoweredTaskEntity implements IRanged {
private static final int TICKS_PER_WORK = 20;
private boolean showingRange;
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(getFarmSize(), 0, getFarmSize());
}
@Override
public boolean isShowingRange() {
return showingRange;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
@Override
public int getColor() {
return 0x66FFAA00;
}
public enum ToolType {
@@ -13,6 +13,7 @@ import org.lwjgl.opengl.GL11;
import com.enderio.core.api.common.util.IProgressTile;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.util.BlockCoord;
@@ -211,4 +212,12 @@ public abstract class GuiMachineBase<T extends AbstractMachineEntity> extends Gu
}
return 0;
}
protected RedstoneModeButton getRedstoneBtn() {
return redstoneButton;
}
protected ToggleButton getConfigBtn() {
return configB;
}
}
@@ -1,6 +1,7 @@
package crazypants.enderio.machine.killera;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.InventoryPlayer;
@@ -8,9 +9,11 @@ import net.minecraft.entity.player.InventoryPlayer;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.util.SoundUtil;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.fluid.Fluids;
@@ -23,6 +26,9 @@ import crazypants.enderio.xp.PacketGivePlayerXP;
public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
private static final int RANGE_ID = 8738924;
private final ToggleButton showRangeB;
private static final int XP_ID = 3489;
private static final int XP10_ID = 34892;
@@ -32,6 +38,18 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
public GuiKillerJoe(InventoryPlayer inventory, final TileKillerJoe tileEntity) {
super(tileEntity, new ContainerKillerJoe(inventory, tileEntity), "killerJoe");
showRangeB = new ToggleButton(this, RANGE_ID, 155, 24 + 18, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(BUTTON_SIZE, BUTTON_SIZE);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
addToolTip(new GuiToolTip(new Rectangle(18, 11, 15, 47), "") {
@Override
@@ -46,11 +64,17 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
}
});
xpB = new IconButton(this, XP_ID, 128, 56, IconEIO.XP);
xpB.setToolTip(EnderIO.lang.localize("killerJoe.giveXp.tooltip"));
int size = 14;
int x = guiLeft + 56 + (65 / 2);
int y = guiTop + 62 + 6;
xp10B = new IconButton(this, XP10_ID, 148, 56, IconEIO.XP_PLUS);
xpB = new IconButton(this, XP_ID, x - 16, y, IconEIO.XP);
xpB.setToolTip(EnderIO.lang.localize("killerJoe.giveXp.tooltip"));
xpB.setSize(size, size);
xp10B = new IconButton(this, XP10_ID, x + 2, y, IconEIO.XP_PLUS);
xp10B.setToolTip(EnderIO.lang.localize("killerJoe.giveXp10.tooltip"));
xp10B.setSize(size, size);
}
@Override
@@ -58,6 +82,9 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
super.initGui();
xpB.onGuiInit();
xp10B.onGuiInit();
showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());
((ContainerKillerJoe) inventorySlots).createGhostSlots(getGhostSlots());
}
@@ -70,6 +97,8 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
} else if (b.id == XP10_ID) {
PacketHandler.INSTANCE.sendToServer(new PacketGivePlayerXP(getTileEntity(), 10));
SoundUtil.playClientSoundFX("random.orb", getTileEntity());
} else if (b.id == RANGE_ID) {
getTileEntity().setShowRange(showRangeB.isSelected());
}
}
@@ -16,6 +16,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.FakePlayer;
@@ -39,6 +40,8 @@ import com.mojang.authlib.GameProfile;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.config.Config;
@@ -47,6 +50,8 @@ import crazypants.enderio.machine.FakePlayerEIO;
import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.generator.zombie.IHasNutrientTank;
import crazypants.enderio.machine.generator.zombie.PacketNutrientTank;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.machine.wireless.WirelessChargedLocation;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.tool.SmartTank;
@@ -56,7 +61,46 @@ import crazypants.enderio.xp.PacketExperianceContainer;
import crazypants.enderio.xp.XpUtil;
public class TileKillerJoe extends AbstractMachineEntity
implements IFluidHandler, IEntitySelector, IHaveExperience, ITankAccess, IHasNutrientTank {
implements IFluidHandler, IEntitySelector, IHaveExperience, ITankAccess, IHasNutrientTank, IRanged {
private boolean showingRange;
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return getKillBounds();
}
@Override
public Vector3d getRange() {
return null;
}
@Override
@SideOnly(Side.CLIENT)
public boolean isShowingRange() {
return showingRange;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
@Override
public int getColor() {
return 0x66FF0000;
}
public static class ZombieCache {
@@ -67,7 +67,7 @@ public class GuiAttractor extends GuiPoweredMachineBase<TileAttractor> {
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int range = (int) getTileEntity().getRange();
int range = (int) getTileEntity().getRange().x;
drawCenteredString(
fontRendererObj,
EnderIO.lang.localize("gui.spawnGurad.range") + " " + range,
@@ -61,8 +61,13 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
}
@Override
public float getRange() {
return range;
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
}
@Override
@@ -71,6 +76,11 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
return showingRange;
}
@Override
public int getColor() {
return 0x66FFFFFF;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
@@ -317,8 +327,7 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
ent.faceEntity(getTarget(), 10.0F, 20.0F);
return true;
} else if (ent instanceof EntitySilverfish) {
PathEntity pathentity = worldObj
.getPathEntityToEntity(ent, getTarget(), getRange(), true, false, false, true);
PathEntity pathentity = worldObj.getPathEntityToEntity(ent, getTarget(), range, true, false, false, true);
((EntityCreature) ent).setPathToEntity(pathentity);
return true;
} else if (ent instanceof EntityBlaze) {
@@ -339,8 +348,7 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
return;
}
EntitySilverfish sf = (EntitySilverfish) ent;
PathEntity pathentity = worldObj
.getPathEntityToEntity(ent, getTarget(), getRange(), true, false, false, true);
PathEntity pathentity = worldObj.getPathEntityToEntity(ent, getTarget(), range, true, false, false, true);
sf.setPathToEntity(pathentity);
} else if (ent instanceof EntityBlaze) {
EntityBlaze mob = (EntityBlaze) ent;
@@ -58,7 +58,7 @@ public class GuiAversionObelisk extends GuiPoweredMachineBase<TileAversionObelis
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int range = (int) getTileEntity().getRange();
int range = (int) getTileEntity().getRange().x;
drawCenteredString(
fontRendererObj,
EnderIO.lang.localize("gui.spawnGurad.range") + " " + range,
@@ -9,6 +9,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -40,6 +41,11 @@ public class TileAversionObelisk extends AbstractPowerConsumerEntity implements
return showingRange;
}
@Override
public int getColor() {
return 0x66FFFFFF;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
@@ -64,8 +70,13 @@ public class TileAversionObelisk extends AbstractPowerConsumerEntity implements
}
@Override
public float getRange() {
return range;
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
}
@Override
@@ -28,7 +28,7 @@ public class GuiInhibitorObelisk extends GuiPoweredMachineBase<TileInhibitorObel
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int range = (int) getTileEntity().getRange();
int range = (int) getTileEntity().getRange().x;
drawCenteredString(
fontRendererObj,
EnderIO.lang.localize("gui.spawnGurad.range") + " " + range,
@@ -1,8 +1,11 @@
package crazypants.enderio.machine.obelisk.inhibitor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.common.vecmath.Vector3d;
import crazypants.enderio.ModObject;
import crazypants.enderio.machine.AbstractPowerConsumerEntity;
import crazypants.enderio.machine.SlotDefinition;
@@ -42,8 +45,13 @@ public class TileInhibitorObelisk extends AbstractPowerConsumerEntity implements
}
@Override
public float getRange() {
return range;
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
}
public void setRange(float range) {
@@ -56,6 +64,11 @@ public class TileInhibitorObelisk extends AbstractPowerConsumerEntity implements
return false;
}
@Override
public int getColor() {
return 0x66FFFFFF;
}
@Override
public void validate() {
super.validate();
@@ -31,6 +31,11 @@ public class BlockWeatherObelisk extends BlockObeliskAbstract<TileWeatherObelisk
Side.CLIENT);
PacketHandler.INSTANCE
.registerMessage(PacketWeatherTank.class, PacketWeatherTank.class, PacketHandler.nextID(), Side.CLIENT);
PacketHandler.INSTANCE.registerMessage(
PacketControlModeWeather.class,
PacketControlModeWeather.class,
PacketHandler.nextID(),
Side.SERVER);
EntityRegistry
.registerModEntity(EntityWeatherRocket.class, "weather_rocket", 33, EnderIO.instance, 64, 3, false);
@@ -11,6 +11,7 @@ import net.minecraftforge.fluids.FluidTank;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.RenderUtil;
@@ -24,6 +25,7 @@ import crazypants.enderio.network.PacketHandler;
public class GuiWeatherObelisk extends GuiPoweredMachineBase<TileWeatherObelisk> {
private IconButton buttonStart;
private ToggleButton buttonMode;
public GuiWeatherObelisk(InventoryPlayer inventory, TileWeatherObelisk tileEntity) {
super(tileEntity, new ContainerWeatherObelisk(inventory, tileEntity), "weatherObelisk");
@@ -50,10 +52,23 @@ public class GuiWeatherObelisk extends GuiPoweredMachineBase<TileWeatherObelisk>
public void initGui() {
super.initGui();
int x = (xSize / 2) - (BUTTON_SIZE / 2);
int x_mode = xSize - 5 - BUTTON_SIZE;
int x_start = (xSize / 2) - (BUTTON_SIZE / 2);
int y = 58;
addButton(buttonStart = new IconButton(this, 0, x, y, IconEIO.TICK));
buttonMode = new ToggleButton(this, 1, x_mode, y, IconEIO.ROUND_ROBIN_OFF, IconEIO.REDSTONE_MODE_WITH_SIGNAL);
buttonMode.setToolTip(EnderIO.lang.localize("gui.machine.weather.control"));
buttonMode.setSelectedToolTip(EnderIO.lang.localize("gui.machine.weather.redstone"));
buttonMode.setUnselectedToolTip(EnderIO.lang.localize("gui.machine.weather.manual"));
buttonMode.setSelected(getTileEntity().getLaunchOnRedstone());
addButton(buttonMode);
buttonMode.onGuiInit();
buttonStart = new IconButton(this, 0, x_start, y, IconEIO.TICK);
buttonStart.setToolTip(EnderIO.lang.localize("gui.machine.weather.run"));
addButton(buttonStart);
buttonStart.onGuiInit();
refreshButtons();
@@ -68,6 +83,9 @@ public class GuiWeatherObelisk extends GuiPoweredMachineBase<TileWeatherObelisk>
}
private void refreshButtons() {
boolean pulseControl = getTileEntity().getLaunchOnRedstone();
pulseControlAction(pulseControl);
FluidStack fs = getTileEntity().getInputTank().getFluid();
if (fs == null) {
buttonStart.enabled = false;
@@ -143,9 +161,22 @@ public class GuiWeatherObelisk extends GuiPoweredMachineBase<TileWeatherObelisk>
@Override
protected void actionPerformed(GuiButton b) {
super.actionPerformed(b);
if (b.id >= 0 && b.id <= 2) {
if (b.id == 0) {
// Start Button
getTileEntity().startTask();
PacketHandler.INSTANCE.sendToServer(new PacketActivateWeather(getTileEntity()));
PacketHandler.INSTANCE.sendToServer(new PacketActivateWeather(getTileEntity(), true));
} else if (b.id == 1) {
// Control Mode Button
boolean pulseControl = buttonMode.isSelected();
getTileEntity().setLaunchOnRedstone(pulseControl);
pulseControlAction(pulseControl);
PacketControlModeWeather packet = new PacketControlModeWeather(getTileEntity());
PacketHandler.INSTANCE.sendToServer(packet);
}
}
protected void pulseControlAction(boolean pulseControl) {
redstoneButton.setVisible(!pulseControl);
buttonStart.setVisible(!pulseControl);
}
}
@@ -7,14 +7,30 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.EnderIO;
import crazypants.enderio.network.PacketUtil;
import io.netty.buffer.ByteBuf;
public class PacketActivateWeather extends MessageTileEntity<TileWeatherObelisk>
implements IMessageHandler<PacketActivateWeather, IMessage> {
private boolean start;
public PacketActivateWeather() {}
public PacketActivateWeather(TileWeatherObelisk te) {
public PacketActivateWeather(TileWeatherObelisk te, boolean start) {
super(te);
this.start = start;
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
buf.writeBoolean(start);
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
start = buf.readBoolean();
}
@Override
@@ -24,6 +40,8 @@ public class PacketActivateWeather extends MessageTileEntity<TileWeatherObelisk>
if (te != null) {
if (ctx.side.isServer()) {
if (PacketUtil.isInvalidPacketForGui(ctx, te, getClass())) return null;
}
if (message.start) {
te.startTask();
} else {
te.stopTask();
@@ -0,0 +1,44 @@
package crazypants.enderio.machine.obelisk.weather;
import com.enderio.core.common.network.MessageTileEntity;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.network.PacketUtil;
import io.netty.buffer.ByteBuf;
public class PacketControlModeWeather extends MessageTileEntity<TileWeatherObelisk>
implements IMessageHandler<PacketControlModeWeather, IMessage> {
private boolean pulse;
public PacketControlModeWeather() {}
public PacketControlModeWeather(TileWeatherObelisk te) {
super(te);
this.pulse = te.getLaunchOnRedstone();
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
buf.writeBoolean(pulse);
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
pulse = buf.readBoolean();
}
@Override
public IMessage onMessage(PacketControlModeWeather message, MessageContext ctx) {
TileWeatherObelisk te = message.getTileEntity(message.getWorld(ctx));
if (te != null) {
if (PacketUtil.isInvalidPacketForGui(ctx, te, getClass())) return null;
te.setLaunchOnRedstone(message.pulse);
}
return null;
}
}
@@ -24,6 +24,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.machine.AbstractPowerConsumerEntity;
import crazypants.enderio.machine.RedstoneControlMode;
import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.power.Capacitors;
@@ -100,6 +101,9 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
private boolean canBeActive = true;
private boolean tanksDirty;
private boolean launchOnRedstone = false;
private int cooldown = 0;
private static final ICapacitor cap = Capacitors.BASIC_CAPACITOR.capacitor;
private FluidTank inputTank = new FluidTank(8000);
@@ -230,7 +234,13 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
protected boolean processTasks(boolean redstoneCheckPassed) {
boolean res = false;
if (!redstoneCheckPassed) {
if (cooldown > 0) {
cooldown--;
res = true;
return res;
}
if (!redstoneCheckPassed && !launchOnRedstone) {
if (canBeActive) {
canBeActive = false;
res = true;
@@ -254,9 +264,13 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
EntityWeatherRocket e = new EntityWeatherRocket(worldObj, activeTask);
e.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
worldObj.spawnEntityInWorld(e);
cooldown = 200;
stopTask();
res = true;
}
} else if (launchOnRedstone && RedstoneControlMode.isConditionMet(RedstoneControlMode.ON, this)) {
startTask();
res = true;
}
}
@@ -280,20 +294,19 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
&& inputTank.getFluidAmount() >= 1000;
}
/**
* @return If the operation was successful.
*/
public boolean startTask() {
public void startTask() {
if (getActiveTask() == null && inputTank.getFluidAmount() > 0) {
fluidUsed = 0;
WeatherTask task = WeatherTask.fromFluid(inputTank.getFluid().getFluid());
if (canStartTask(task)) {
if (!worldObj.isRemote) {
PacketHandler.INSTANCE
.sendToDimension(new PacketActivateWeather(this, true), worldObj.provider.dimensionId);
}
decrStackSize(0, 1);
activeTask = task;
return true;
}
}
return false;
}
public void stopTask() {
@@ -301,7 +314,8 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
activeTask = null;
fluidUsed = 0;
if (!worldObj.isRemote) {
PacketHandler.INSTANCE.sendToDimension(new PacketActivateWeather(this), worldObj.provider.dimensionId);
PacketHandler.INSTANCE
.sendToDimension(new PacketActivateWeather(this, false), worldObj.provider.dimensionId);
} else {
playedFuse = false;
}
@@ -312,12 +326,14 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
public void writeCommon(NBTTagCompound nbtRoot) {
super.writeCommon(nbtRoot);
nbtRoot.setTag("tank", inputTank.writeToNBT(new NBTTagCompound()));
nbtRoot.setBoolean("weatherobeliskcontrolmode", launchOnRedstone);
}
@Override
public void readCommon(NBTTagCompound nbtRoot) {
super.readCommon(nbtRoot);
inputTank.readFromNBT(nbtRoot.getCompoundTag("tank"));
launchOnRedstone = nbtRoot.getBoolean("weatherobeliskcontrolmode");
}
private boolean isValidFluid(Fluid f) {
@@ -382,4 +398,12 @@ public class TileWeatherObelisk extends AbstractPowerConsumerEntity
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
return new FluidTankInfo[] { inputTank.getInfo() };
}
public void setLaunchOnRedstone(boolean launchOnRedstone) {
this.launchOnRedstone = launchOnRedstone;
}
public boolean getLaunchOnRedstone() {
return this.launchOnRedstone;
}
}
@@ -1,8 +1,10 @@
package crazypants.enderio.machine.ranged;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.vecmath.Vector3d;
public interface IRanged {
@@ -10,7 +12,11 @@ public interface IRanged {
BlockCoord getLocation();
float getRange();
AxisAlignedBB getBounds();
Vector3d getRange();
boolean isShowingRange();
int getColor();
}
@@ -5,6 +5,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -13,16 +14,22 @@ public class RangeEntity extends Entity {
int totalLife = 20;
int lifeSpan = totalLife;
float range;
private IRanged spawnGuard;
private Vector3d lastRange;
private AxisAlignedBB lastBounds;
private final IRanged spawnGuard;
private int color;
private AxisAlignedBB rangeBounds;
private Vector3d range;
public RangeEntity(IRanged sg) {
super(sg.getWorld());
spawnGuard = sg;
BlockCoord bc = spawnGuard.getLocation();
setPosition(bc.x + 0.5, bc.y + 0.5, bc.z + 0.5);
setPosition(bc.x - 0.01, bc.y - 0.01, bc.z - 0.01);
ignoreFrustumCheck = true;
range = sg.getRange() + 0.5f;
color = sg.getColor();
lastRange = spawnGuard.getRange();
lastBounds = spawnGuard.getBounds();
}
@Override
@@ -41,7 +48,14 @@ public class RangeEntity extends Entity {
@Override
public AxisAlignedBB getBoundingBox() {
return null;
return spawnGuard.getBounds() != null ? spawnGuard.getBounds()
: AxisAlignedBB.getBoundingBox(
posX - lastRange.x,
posY - lastRange.y,
posZ - lastRange.z,
posX + lastRange.x + 1,
posY + lastRange.y + 1,
posZ + lastRange.z + 1);
}
@Override
@@ -49,6 +63,8 @@ public class RangeEntity extends Entity {
super.onUpdate();
lifeSpan--;
BlockCoord bc = spawnGuard.getLocation();
updateRange();
if (!(worldObj.getTileEntity(bc.x, bc.y, bc.z) instanceof IRanged)) {
setDead();
}
@@ -62,4 +78,17 @@ public class RangeEntity extends Entity {
@Override
protected void writeEntityToNBT(NBTTagCompound p_70014_1_) {}
private void updateRange() {
if (lastRange != null && !lastRange.equals(spawnGuard.getRange())) {
lastRange = spawnGuard.getRange();
} else if (lastBounds != null && !lastBounds.equals(spawnGuard.getBounds())) {
lastBounds = spawnGuard.getBounds();
}
}
public float[] getColor() {
return new float[] { (float) (this.color >> 16 & 255) / 255.0F, (float) (this.color >> 8 & 255) / 255.0F,
(float) (this.color & 255) / 255.0F, (float) (this.color >> 24 & 255) / 255.0F };
}
}
@@ -3,6 +3,7 @@ package crazypants.enderio.machine.ranged;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderEntity;
import net.minecraft.entity.Entity;
import net.minecraft.util.AxisAlignedBB;
import org.lwjgl.opengl.GL11;
@@ -10,17 +11,19 @@ import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.client.render.CubeRenderer;
import com.enderio.core.client.render.IconUtil;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RangeRenerer extends RenderEntity {
public class RangeRenderer extends RenderEntity {
@Override
public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) {
RangeEntity se = ((RangeEntity) entity);
AxisAlignedBB rangeBB = se.getBoundingBox();
final Tessellator tessellator = Tessellator.instance;
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
@@ -30,21 +33,29 @@ public class RangeRenerer extends RenderEntity {
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDepthMask(false);
float scale = 1 - (se.lifeSpan / (float) se.totalLife);
scale = Math.min(scale, 1);
scale *= se.range;
Vector3d translate = new Vector3d(
-(se.posX - rangeBB.minX + 0.01),
-(se.posY - rangeBB.minY + 0.01),
-(se.posZ - rangeBB.minZ + 0.01));
Vector3d scale = new Vector3d(
1 - (se.lifeSpan / (float) se.totalLife),
1 - (se.lifeSpan / (float) se.totalLife),
rangeBB.maxZ - rangeBB.minZ);
scale.x = Math.min(scale.x, 1);
scale.y = Math.min(scale.y, 1);
scale.x *= (rangeBB.maxX - rangeBB.minX);
scale.y *= (rangeBB.maxY - rangeBB.minY);
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glTranslatef(0.5f, 0.5f, 0.5f);
GL11.glScalef(scale, scale, scale);
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
GL11.glColor4f(1, 1, 1, 0.4f);
GL11.glColor4f(se.getColor()[0], se.getColor()[1], se.getColor()[2], se.getColor()[3]);
RenderUtil.bindBlockTexture();
tessellator.startDrawingQuads();
GL11.glTranslated(x, y, z);
GL11.glTranslated(translate.x, translate.y, translate.z);
GL11.glScaled(scale.x, scale.y, scale.z);
tessellator.setBrightness(15 << 20 | 15 << 4);
CubeRenderer.get().render(BoundingBox.UNIT_CUBE, IconUtil.whiteTexture);
tessellator.draw();
@@ -2,6 +2,7 @@ package crazypants.enderio.machine.spawner;
import java.awt.Color;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
@@ -10,22 +11,40 @@ import net.minecraft.entity.player.InventoryPlayer;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.MultiIconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.gui.GuiPoweredMachineBase;
import crazypants.enderio.network.PacketHandler;
public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner> {
private static final int RANGE_ID = 8738924;
private final MultiIconButton modeB;
private final Rectangle progressTooltipRect;
private final ToggleButton showRangeB;
private boolean wasSpawnMode;
private String header;
public GuiPoweredSpawner(InventoryPlayer par1InventoryPlayer, TilePoweredSpawner te) {
super(te, new ContainerPoweredSpawner(par1InventoryPlayer, te), "poweredSpawner");
showRangeB = new ToggleButton(this, RANGE_ID, 155, 24 + 18, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(BUTTON_SIZE, BUTTON_SIZE);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
modeB = MultiIconButton.createRightArrowButton(this, 8888, 115, 10);
modeB.setSize(10, 16);
@@ -38,6 +57,8 @@ public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner>
@Override
public void initGui() {
super.initGui();
showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());
modeB.onGuiInit();
((ContainerPoweredSpawner) inventorySlots).createGhostSlots(getGhostSlots());
}
@@ -47,9 +68,9 @@ public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner>
if (par1GuiButton == modeB) {
getTileEntity().setSpawnMode(!getTileEntity().isSpawnMode());
PacketHandler.INSTANCE.sendToServer(new PacketMode(getTileEntity()));
} else {
super.actionPerformed(par1GuiButton);
}
} else if (par1GuiButton.id == RANGE_ID) {
getTileEntity().setShowRange(showRangeB.isSelected());
} else super.actionPerformed(par1GuiButton);
}
private void updateSpawnMode(boolean spawnMode) {
@@ -7,7 +7,12 @@ import net.minecraft.entity.EnumCreatureType;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.config.Config;
@@ -16,11 +21,13 @@ import crazypants.enderio.machine.IMachineRecipe;
import crazypants.enderio.machine.IPoweredTask;
import crazypants.enderio.machine.PoweredTask;
import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.power.BasicCapacitor;
import crazypants.enderio.power.Capacitors;
import crazypants.enderio.power.ICapacitor;
public class TilePoweredSpawner extends AbstractPoweredTaskEntity {
public class TilePoweredSpawner extends AbstractPoweredTaskEntity implements IRanged {
public static final int MIN_SPAWN_DELAY_BASE = Config.poweredSpawnerMinDelayTicks;
public static final int MAX_SPAWN_DELAY_BASE = Config.poweredSpawnerMaxDelayTicks;
@@ -94,6 +101,7 @@ public class TilePoweredSpawner extends AbstractPoweredTaskEntity {
private boolean isSpawnMode = true;
private int powerUsePerTick;
private int remainingSpawnTries;
private boolean showingRange;
public TilePoweredSpawner() {
super(new SlotDefinition(1, 1, 1));
@@ -178,6 +186,7 @@ public class TilePoweredSpawner extends AbstractPoweredTaskEntity {
basePowerUse = POWER_PER_TICK_TEN;
break;
}
double multiplier = PoweredSpawnerConfig.getInstance().getCostMultiplierFor(getEntityName());
setCapacitor(
new BasicCapacitor(
@@ -375,4 +384,41 @@ public class TilePoweredSpawner extends AbstractPoweredTaskEntity {
public boolean hasEntityName() {
return !NULL_ENTITY_NAME.equals(entityTypeName);
}
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
int range = Config.poweredSpawnerSpawnRange - 1;
return new Vector3d(range, 1, range);
}
@Override
public boolean isShowingRange() {
return showingRange;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
@Override
public int getColor() {
return 0x66FF0000;
}
}
@@ -2,6 +2,7 @@ package crazypants.enderio.machine.vacuum;
import java.awt.Color;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
@@ -18,6 +19,7 @@ import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.enderio.core.client.render.EnderWidget;
import com.enderio.core.common.util.BlockCoord;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.item.filter.ItemFilter;
@@ -28,6 +30,7 @@ import crazypants.enderio.network.PacketHandler;
public class GuiVacuumChest extends GuiContainerBaseEIO {
private static final int RANGE_ID = 8738924;
private static final int RANGE_LEFT = 145;
private static final int RANGE_TOP = 86;
private static final int RANGE_WIDTH = 16;
@@ -43,6 +46,7 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
private final TileVacuumChest te;
private final ToggleButton showRangeB;
private final GuiToolTip rangeTooltip;
private final MultiIconButton rangeUpB;
private final MultiIconButton rangeDownB;
@@ -75,6 +79,18 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
y = 104;
rsB = new RedstoneModeButton(this, ID_REDSTONE, x, y, te, new BlockCoord(te));
showRangeB = new ToggleButton(this, RANGE_ID, x - 18, y, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(16, 16);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
x = FILTER_LEFT + TileVacuumChest.FILTER_SLOTS * 18 + 2;
y = 86;
whiteListB = new ToggleButton(this, ID_WHITELIST, x, y, IconEIO.FILTER_WHITELIST, IconEIO.FILTER_BLACKLIST);
@@ -110,6 +126,8 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
public void initGui() {
super.initGui();
showRangeB.onGuiInit();
showRangeB.setSelected(te.isShowingRange());
rangeUpB.onGuiInit();
rangeDownB.onGuiInit();
rsB.onGuiInit();
@@ -124,11 +142,13 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
ItemFilter itemFilter;
switch (guiButton.id) {
case ID_RANGE_UP:
setRange(te.getRange() + 1);
setRange((int) te.getRange().x + 1);
break;
case ID_RANGE_DOWN:
setRange(te.getRange() - 1);
setRange((int) te.getRange().x - 1);
break;
case RANGE_ID:
te.setShowRange(showRangeB.isSelected());
case ID_WHITELIST:
itemFilter = te.getItemFilter();
if (itemFilter != null) {
@@ -193,7 +213,7 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
fr.drawString(headerInventory, sx + 7, sy + 111, headerColor);
IconEIO.map.render(EnderWidget.BUTTON_DOWN, sx + RANGE_LEFT, sy + RANGE_TOP, RANGE_WIDTH, 16, 0, true);
String str = Integer.toString(te.getRange());
String str = Integer.toString((int) te.getRange().x);
int sw = fr.getStringWidth(str);
fr.drawString(str, sx + RANGE_LEFT + RANGE_WIDTH - sw - 5, sy + RANGE_TOP + 5, ColorUtil.getRGB(Color.black));
@@ -13,10 +13,14 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.common.util.ItemUtil;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.TileEntityEio;
@@ -26,8 +30,11 @@ import crazypants.enderio.conduit.item.filter.ItemFilter;
import crazypants.enderio.config.Config;
import crazypants.enderio.machine.IRedstoneModeControlable;
import crazypants.enderio.machine.RedstoneControlMode;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
public class TileVacuumChest extends TileEntityEio implements IEntitySelector, IInventory, IRedstoneModeControlable {
public class TileVacuumChest extends TileEntityEio
implements IEntitySelector, IInventory, IRedstoneModeControlable, IRanged {
public static final int ITEM_ROWS = 3;
public static final int ITEM_SLOTS = 9 * ITEM_ROWS;
@@ -42,6 +49,8 @@ public class TileVacuumChest extends TileEntityEio implements IEntitySelector, I
protected boolean redstoneCheckPassed;
private boolean redstoneStateDirty = true;
private boolean showingRange;
@Override
public void doUpdate() {
if (redstoneStateDirty) {
@@ -226,8 +235,41 @@ public class TileVacuumChest extends TileEntityEio implements IEntitySelector, I
&& itemstack.getItemDamage() == 0;
}
public int getRange() {
return range;
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
}
@Override
@SideOnly(Side.CLIENT)
public boolean isShowingRange() {
return showingRange;
}
@Override
public int getColor() {
return 0x660000FF;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
private int limitRange(int range) {
@@ -129,7 +129,7 @@ public class BlockFusedQuartz extends BlockEio {
int meta = world.getBlockMetadata(x, y, z);
Type type = Type.byMeta(meta);
if (type.blastResistance) {
return 20;
return Config.fusedQuartzExplosionResistance;
} else {
return super.getExplosionResistance(par1Entity);
}
@@ -1130,6 +1130,7 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.name=Apiarist's Pants
enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Protection against bees
enderio.darksteel.upgrade.apiaristArmor.boots.name=Apiarist's Shoes
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Protection against bees
enderio.darksteel.upgrade.trackmansGoggles.name=Brýle strojvůdce
enderio.darksteel.upgrade.jump.enabled=Jump Enabled
enderio.darksteel.upgrade.jump.disabled=Jump Disabled
enderio.darksteel.upgrade.solar_one.name=Solar I
@@ -1219,6 +1220,7 @@ enderio.category.darksteelarmor=Dark Steel Armor
enderio.category.tools=EnderIO - Tools
enderio.keybind.glidertoggle=Glider Toggle
enderio.keybind.gogglesofrevealing=Goggles of Revealing
enderio.keybind.trackmansgoggles=Brýle strojvůdce
enderio.keybind.nightvision=Night Vision
enderio.keybind.soundlocator=Sound Locator
enderio.keybind.speed=Speed
@@ -906,6 +906,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Schutz g
enderio.darksteel.upgrade.apiaristArmor.boots.name=Imkerschuhe
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Schutz gegen Beinen
enderio.darksteel.upgrade.trackmansGoggles.name=Schienenwartbrille
item.itemGliderWing.name=Gleiterflügel
item.itemGliderWings.name=Gleiterflügelpaar
item.itemGliderWings.tooltip.detailed.line1=Upgrade für den
@@ -1241,6 +1243,7 @@ enderio.category.darksteelarmor=Dunkelstahlrüstung
enderio.category.tools=EnderIO - Werkzeuge
enderio.keybind.glidertoggle=Gleiterschaltung
enderio.keybind.gogglesofrevealing=Brille der Enthüllung
enderio.keybind.trackmansgoggles=Schienenwartbrille
enderio.keybind.nightvision=Nachtsicht
enderio.keybind.soundlocator=Schalldetektor
enderio.keybind.speed=Schnelligkeit
@@ -974,6 +974,9 @@ enderio.darksteel.upgrade.gogglesOfRevealing.tooltip.detailed.line1=Vis Discount
enderio.darksteel.upgrade.gogglesOfRevealing.enabled=Magic is being revealed
enderio.darksteel.upgrade.gogglesOfRevealing.disabled=Magic is hidden from plain sight
enderio.darksteel.upgrade.trackmansGoggles.name=Trackman's Goggles
enderio.darksteel.upgrade.trackmansGoggles.tooltip.detailed.line1=Show infrastructure and anchor auras
enderio.darksteel.upgrade.naturalistEye.name=Naturalist's Eye
enderio.darksteel.upgrade.naturalistEye.tooltip.detailed.line1=Shows pollinated tree leaves
@@ -1098,6 +1101,10 @@ enderio.gui.machine.side.west=West
enderio.gui.machine.side.east=East
enderio.gui.machine.side.up=Up
enderio.gui.machine.side.down=Down
enderio.gui.machine.weather.control=Control Mode
enderio.gui.machine.weather.redstone=Launch on Redstone
enderio.gui.machine.weather.manual=Default Control Mode
enderio.gui.machine.weather.run=Launch
#Power Monitor
@@ -1412,6 +1419,7 @@ enderio.category.darksteelarmor=Dark Steel Armor
enderio.category.tools=EnderIO - Tools
enderio.keybind.glidertoggle=Glider Toggle
enderio.keybind.gogglesofrevealing=Goggles of Revealing
enderio.keybind.trackmansgoggles=Trackman's Goggles
enderio.keybind.nightvision=Night Vision
enderio.keybind.soundlocator=Sound Locator
enderio.keybind.speed=Speed
@@ -660,6 +660,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Protecci
enderio.darksteel.upgrade.apiaristArmor.boots.name=Zapatos del Apicultor
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Protección contra abejas.
enderio.darksteel.upgrade.trackmansGoggles.name=Gafas de Ferroviario
item.itemGliderWing.name=Ala de Planeador
item.itemGliderWings.name=Alas de Planeador
item.itemGliderWings.tooltip.detailed.line1=Mejora para la pechera de Acero Oscuro.
@@ -979,6 +981,7 @@ enderio.category.darksteelarmor=Armadura de Acero Oscuro
enderio.category.tools=EnderIO - Herramientas
enderio.keybind.glidertoggle=Activar/Desactivar Planeador
enderio.keybind.gogglesofrevealing=Gafas de Revelación
enderio.keybind.trackmansgoggles=Gafas de Ferroviario
enderio.keybind.nightvision=Visión Nocturna
enderio.keybind.soundlocator=Localizador de Sonidos
enderio.keybind.speed=Velocidad
@@ -662,6 +662,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Protecci
enderio.darksteel.upgrade.apiaristArmor.boots.name=Zapatos del Apicultor
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Protección contra abejas.
enderio.darksteel.upgrade.trackmansGoggles.name=Gafas de Ferroviario
item.itemGliderWing.name=Ala de Planeador
item.itemGliderWings.name=Alas de Planeador
item.itemGliderWings.tooltip.detailed.line1=Mejora para la pechera de Acero Oscuro.
@@ -981,6 +983,7 @@ enderio.category.darksteelarmor=Armadura de Acero Oscuro
enderio.category.tools=EnderIO - Herramientas
enderio.keybind.glidertoggle=Activar/Desactivar Planeador
enderio.keybind.gogglesofrevealing=Gafas de Revelación
enderio.keybind.trackmansgoggles=Gafas de Ferroviario
enderio.keybind.nightvision=Visión Nocturna
enderio.keybind.soundlocator=Localizador de Sonidos
enderio.keybind.speed=Velocidad
@@ -660,6 +660,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Protecci
enderio.darksteel.upgrade.apiaristArmor.boots.name=Zapatos del Apicultor
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Protección contra abejas.
enderio.darksteel.upgrade.trackmansGoggles.name=Gafas de Ferroviario
item.itemGliderWing.name=Ala de Planeador
item.itemGliderWings.name=Alas de Planeador
item.itemGliderWings.tooltip.detailed.line1=Mejora para la pechera de Acero Oscuro.
@@ -979,6 +981,7 @@ enderio.category.darksteelarmor=Armadura de Acero Oscuro
enderio.category.tools=EnderIO - Herramientas
enderio.keybind.glidertoggle=Activar/Desactivar Planeador
enderio.keybind.gogglesofrevealing=Gafas de Revelación
enderio.keybind.trackmansgoggles=Gafas de Ferroviario
enderio.keybind.nightvision=Visión Nocturna
enderio.keybind.soundlocator=Localizador de Sonidos
enderio.keybind.speed=Velocidad
@@ -660,6 +660,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Protecci
enderio.darksteel.upgrade.apiaristArmor.boots.name=Zapatos del Apicultor
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Protección contra abejas.
enderio.darksteel.upgrade.trackmansGoggles.name=Gafas de Ferroviario
item.itemGliderWing.name=Ala de Planeador
item.itemGliderWings.name=Alas de Planeador
item.itemGliderWings.tooltip.detailed.line1=Mejora para la pechera de Acero Oscuro.
@@ -979,6 +981,7 @@ enderio.category.darksteelarmor=Armadura de Acero Oscuro
enderio.category.tools=EnderIO - Herramientas
enderio.keybind.glidertoggle=Activar/Desactivar Planeador
enderio.keybind.gogglesofrevealing=Gafas de Revelación
enderio.keybind.trackmansgoggles=Gafas de Ferroviario
enderio.keybind.nightvision=Visión Nocturna
enderio.keybind.soundlocator=Localizador de Sonidos
enderio.keybind.speed=Velocidad
@@ -979,6 +979,8 @@ enderio.category.darksteelarmor=Armadura de Acero Oscuro
enderio.category.tools=EnderIO - Herramientas
enderio.keybind.glidertoggle=Activar/Desactivar Planeador
enderio.keybind.gogglesofrevealing=Gafas de Revelación
enderio.keybind.trackmansgoggles=Gafas de Ferroviario
enderio.darksteel.upgrade.trackmansGoggles.name=Gafas de Ferroviario
enderio.keybind.nightvision=Visión Nocturna
enderio.keybind.soundlocator=Localizador de Sonidos
enderio.keybind.speed=Velocidad
@@ -683,6 +683,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Protecti
enderio.darksteel.upgrade.apiaristArmor.boots.name=Chaussures d'Apiculteur
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Protection contre les abeilles
enderio.darksteel.upgrade.trackmansGoggles.name=Lunettes de l'agent de voie
item.itemGliderWing.name=Aile de Planeur
item.itemGliderWings.name=Ailes de Planeur
item.itemGliderWings.tooltip.detailed.line1=Amélioration pour
@@ -996,6 +998,7 @@ enderio.category.darksteelarmor=Armure d'Acier Sombre
enderio.category.tools=EnderIO - Outils
enderio.keybind.glidertoggle=Mode Planeur
enderio.keybind.gogglesofrevealing=Lunettes de Révélation
enderio.keybind.trackmansgoggles=Lunettes de l'agent de voie
enderio.keybind.nightvision=Vision Nocturne
enderio.keybind.soundlocator=Détecteur de Sons
enderio.keybind.speed=Vitesse
@@ -949,6 +949,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=Защи
enderio.darksteel.upgrade.apiaristArmor.boots.name=Обувь пчеловода
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=Защита от пчёл
enderio.darksteel.upgrade.trackmansGoggles.name=Очки обходчика путей
item.itemGliderWing.name=Крыло планёра
item.itemGliderWings.name=Крылья планёра
item.itemGliderWings.tooltip.detailed.line1=Улучшается кирасой
@@ -1292,6 +1294,7 @@ enderio.category.darksteelarmor=Броня из тёмной стали
enderio.category.tools=EnderIO - Инструменты
enderio.keybind.glidertoggle=Переключить планер
enderio.keybind.gogglesofrevealing=Очки откровения
enderio.keybind.trackmansgoggles=Очки обходчика путей
enderio.keybind.nightvision=Ночное зрение
enderio.keybind.soundlocator=Звуколокатор
enderio.keybind.speed=Скорость
@@ -949,6 +949,8 @@ enderio.darksteel.upgrade.apiaristArmor.leggings.tooltip.detailed.line1=提供
enderio.darksteel.upgrade.apiaristArmor.boots.name=养蜂员之鞋
enderio.darksteel.upgrade.apiaristArmor.boots.tooltip.detailed.line1=提供保护以减少蜜蜂的伤害
enderio.darksteel.upgrade.trackmansGoggles.name=铁路工护目镜
item.itemGliderWing.name=滑翔翼
item.itemGliderWings.name=滑翔翼
item.itemGliderWings.tooltip.detailed.line1=用于升级
@@ -1372,6 +1374,7 @@ enderio.category.darksteelarmor=玄铁护甲
enderio.category.tools=EnderIO - 工具
enderio.keybind.glidertoggle=滑翔开关
enderio.keybind.gogglesofrevealing=揭示护目镜
enderio.keybind.trackmansgoggles=铁路工护目镜
enderio.keybind.nightvision=夜视
enderio.keybind.soundlocator=声波定位
enderio.keybind.speed=速度
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB