Compare commits

..
9 Commits
Author SHA1 Message Date
Martin Robertz 3acc18c5bb Merge remote-tracking branch 'dibbydoda/Remove-deprecated-capacitorbank' into dev 2025-05-23 23:46:36 +02:00
dibbydoda 7583e2f39d Remove unused lines from Langs 2025-05-23 19:44:48 +10:00
dibbydoda b5dba458bc SA 2025-05-20 19:55:42 +10:00
dibbydoda 835e4c57a4 Unify texture names 2025-05-20 19:51:28 +10:00
dibbydoda 43105b2291 Remove old textures 2025-05-20 19:30:48 +10:00
dibbydoda ac14a6c4e0 Move single remaining class to power folder 2025-05-20 19:22:23 +10:00
dibbydoda 9ee3f7c4fa Remove conversion recipe 2025-05-20 19:12:49 +10:00
dibbydoda 055378b683 Remove bulk 2025-05-20 19:09:31 +10:00
dibbydoda 2628477db7 Start removal 2025-05-20 18:30:40 +10:00
69 changed files with 611 additions and 612 deletions

No files matched your search

+15 -16
View File
@@ -1,24 +1,24 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:EnderCore:0.5.0:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ForestryMC:4.10.17:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.8.11-GTNH:dev')
api("com.github.GTNewHorizons:GTNHLib:0.7.0:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.45:dev')
api('com.github.GTNewHorizons:EnderCore:0.4.8:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ForestryMC:4.10.8:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.45-GTNH:dev')
api("com.github.GTNewHorizons:GTNHLib:0.6.22: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.14.4-GTNH:dev")
api("com.github.GTNewHorizons:TinkersConstruct:1.13.28-GTNH:dev")
compileOnly('com.github.GTNewHorizons:waila:1.9.0:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-714-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-613-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.32:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:ModularUI2:2.3.1-1.7.10:dev") {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.17.0:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.2.0-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.17.0-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.0-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.291:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:ModularUI2:2.2.15-1.7.10:dev") {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.16.28:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.1.0-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.16.4-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.11.15-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
@@ -26,6 +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-beta60:api') {transitive = false}
compileOnly("com.github.GTNewHorizons:Hodgepodge:2.7.2:dev")
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta42:api') {transitive = false}
}
+2 -2
View File
@@ -80,7 +80,7 @@ apiPackage = api
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
# There can be multiple files in a space-separated list.
# Example value: mymodid_at.cfg nei_at.cfg
accessTransformersFile = enderio_at.cfg
accessTransformersFile =
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
@@ -151,7 +151,7 @@ modrinthProjectId =
# type can be one of [project, version],
# and the name is the Modrinth project or version slug/id of the other mod.
# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true
modrinthRelations =
# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens.
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.43'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.38'
}
@@ -190,6 +190,7 @@ import crazypants.util.EE3Util;
after:Waila@[1.5.8,);\
after:Thaumcraft;\
after:appliedenergistics2@[rv2-beta-8,);\
after:chisel;\
after:Railcraft@[9.16.7,)\
""", guiFactory = "crazypants.enderio.config.ConfigFactoryEIO")
public class EnderIO {
@@ -213,7 +214,6 @@ public class EnderIO {
public static final boolean hasLwjgl3 = Loader.isModLoaded("lwjgl3ify");
public static final boolean hasGT5 = Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi");
public static final boolean hasHP = Loader.isModLoaded("hodgepodge");
// Materials
public static ItemCapacitor itemBasicCapacitor;
@@ -487,9 +487,7 @@ public class EnderIO {
itemGrindingBall = ItemGrindingBall.create();
itemAlloyEndergy = ItemAlloyEndergy.create();
itemGrindingBallEndergy = ItemGrindingBallEndergy.create();
if (!hasGT5) {
itemPowderIngot = ItemPowderIngot.create();
}
itemPowderIngot = ItemPowderIngot.create();
registerFluids();
@@ -729,9 +727,7 @@ public class EnderIO {
SkeletonHandler.registerSkeleton(this);
}
if (!hasGT5) {
MaterialRecipes.registerDependantOresInDictionary();
}
MaterialRecipes.registerDependantOresInDictionary();
EnderfaceRecipes.addRecipes();
MaterialRecipes.addRecipes();
@@ -160,6 +160,7 @@ public class BlockConduitBundle extends BlockEio
BlockConduitBundle result = new BlockConduitBundle();
result.init();
MinecraftForge.EVENT_BUS.register(result);
return result;
}
@@ -291,6 +292,41 @@ public class BlockConduitBundle extends BlockEio
effectRenderer.addEffect(digFX);
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySound(PlaySoundSourceEvent event) {
String path = event.sound.getPositionedSoundLocation().getResourcePath();
if ("silence.step".equals(path)) {
ISound snd = event.sound;
World world = EnderIO.proxy.getClientWorld();
BlockCoord bc = new BlockCoord(snd.getXPosF(), snd.getYPosF(), snd.getZPosF());
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playHitSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playHitSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySoundAtEntity(PlaySoundAtEntityEvent event) {
String path = event.name;
World world = event.entity.worldObj;
if ("EnderIO:silence.step".equals(path) && world.isRemote) {
BlockCoord bc = new BlockCoord(event.entity.posX, event.entity.posY - 2, event.entity.posZ);
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playStepSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playStepSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@Override
protected void init() {
super.init();
@@ -298,7 +334,6 @@ public class BlockConduitBundle extends BlockEio
EnderIO.guiHandler.registerGuiHandler(GuiHandler.GUI_ID_EXTERNAL_CONNECTION_BASE + dir.ordinal(), this);
}
EnderIO.guiHandler.registerGuiHandler(GuiHandler.GUI_ID_EXTERNAL_CONNECTION_SELECTOR, this);
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
@@ -438,6 +473,24 @@ public class BlockConduitBundle extends BlockEio
: resist;
}
@SubscribeEvent
public void onBreakSpeed(BreakSpeed event) {
if (event.block == this) {
ItemStack held = event.entityPlayer.getCurrentEquippedItem();
if (held == null || held.getItem().getHarvestLevel(held, "pickaxe") == -1) {
event.newSpeed += 2;
}
IConduitBundle te = (IConduitBundle) event.entity.worldObj.getTileEntity(event.x, event.y, event.z);
if (te != null && te.getFacadeType() == FacadeType.HARDENED) {
if (!ConduitUtil.isSolidFacadeRendered(te, event.entityPlayer)) {
event.newSpeed *= 6;
} else {
event.newSpeed *= 2;
}
}
}
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderBlockPass() {
@@ -1221,61 +1274,4 @@ public class BlockConduitBundle extends BlockEio
private boolean hasMicroblocks(IConduitBundle bundle) {
return !bundle.getCoverSystem().getAllParts().isEmpty();
}
public class EventHandler {
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySound(PlaySoundSourceEvent event) {
String path = event.sound.getPositionedSoundLocation().getResourcePath();
if ("silence.step".equals(path)) {
ISound snd = event.sound;
World world = EnderIO.proxy.getClientWorld();
if (world == null) return;
BlockCoord bc = new BlockCoord(snd.getXPosF(), snd.getYPosF(), snd.getZPosF());
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playHitSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playHitSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySoundAtEntity(PlaySoundAtEntityEvent event) {
String path = event.name;
World world = event.entity.worldObj;
if ("EnderIO:silence.step".equals(path) && world.isRemote) {
BlockCoord bc = new BlockCoord(event.entity.posX, event.entity.posY - 2, event.entity.posZ);
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playStepSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playStepSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@SubscribeEvent
public void onBreakSpeed(BreakSpeed event) {
if (event.block == BlockConduitBundle.this) {
ItemStack held = event.entityPlayer.getCurrentEquippedItem();
if (held == null || held.getItem().getHarvestLevel(held, "pickaxe") == -1) {
event.newSpeed += 2;
}
IConduitBundle te = (IConduitBundle) event.entity.worldObj.getTileEntity(event.x, event.y, event.z);
if (te != null && te.getFacadeType() == FacadeType.HARDENED) {
if (!ConduitUtil.isSolidFacadeRendered(te, event.entityPlayer)) {
event.newSpeed *= 6;
} else {
event.newSpeed *= 2;
}
}
}
}
}
}
@@ -11,14 +11,12 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentTranslation;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import com.enderio.core.common.util.ChatUtil;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
import cpw.mods.fml.common.gameevent.InputEvent.MouseInputEvent;
import crazypants.enderio.EnderIO;
import crazypants.enderio.api.teleport.IItemOfTravel;
import crazypants.enderio.api.tool.IConduitControl;
@@ -136,18 +134,6 @@ public class KeyTracker {
@SubscribeEvent
public void onKeyInput(KeyInputEvent event) {
handleInput();
}
// mouse button presses arrive on a separate event
@SubscribeEvent
public void onMouseInput(MouseInputEvent event) {
if (Mouse.getEventButton() >= 0) {
handleInput();
}
}
private void handleInput() {
handleGlide();
handleSoundDetector();
handleNightVision();
@@ -67,6 +67,7 @@ public class ItemDarkSteelAxe extends ItemAxe
public static ItemDarkSteelAxe create() {
ItemDarkSteelAxe res = new ItemDarkSteelAxe();
MinecraftForge.EVENT_BUS.register(res);
res.init();
return res;
}
@@ -187,6 +188,18 @@ public class ItemDarkSteelAxe extends ItemAxe
return usedPower;
}
@SubscribeEvent
public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) {
if (evt.entityPlayer.isSneaking()
&& isEquippedAndPowered(evt.entityPlayer, Config.darkSteelAxePowerUsePerDamagePointMultiHarvest)
&& isLog(evt.block, evt.metadata)) {
evt.newSpeed = evt.originalSpeed / Config.darkSteelAxeSpeedPenaltyMultiHarvest;
}
if (isEquipped(evt.entityPlayer) && evt.block.getMaterial() == Material.leaves) {
evt.newSpeed = 6;
}
}
@Override
public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int side,
float par8, float par9, float par10) {
@@ -245,7 +258,6 @@ public class ItemDarkSteelAxe extends ItemAxe
protected void init() {
GameRegistry.registerItem(this, getUnlocalizedName());
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
@@ -324,19 +336,4 @@ public class ItemDarkSteelAxe extends ItemAxe
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
}
public class EventHandler {
@SubscribeEvent
public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) {
if (evt.entityPlayer.isSneaking()
&& isEquippedAndPowered(evt.entityPlayer, Config.darkSteelAxePowerUsePerDamagePointMultiHarvest)
&& isLog(evt.block, evt.metadata)) {
evt.newSpeed = evt.originalSpeed / Config.darkSteelAxeSpeedPenaltyMultiHarvest;
}
if (isEquipped(evt.entityPlayer) && evt.block.getMaterial() == Material.leaves) {
evt.newSpeed = 6;
}
}
}
}
@@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.MinecraftForge;
import com.enderio.core.api.client.gui.IAdvancedTooltipProvider;
import com.enderio.core.common.util.ItemUtil;
@@ -60,6 +61,7 @@ public class ItemDarkSteelPickaxe extends ItemPickaxe
public static ItemDarkSteelPickaxe create() {
ItemDarkSteelPickaxe res = new ItemDarkSteelPickaxe();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -62,12 +62,13 @@ public class ItemDarkSteelShears extends ItemShears
public static ItemDarkSteelShears create() {
ItemDarkSteelShears res = new ItemDarkSteelShears();
MinecraftForge.EVENT_BUS.register(res);
res.init();
return res;
}
private final MultiHarvestComparator harvestComparator = new MultiHarvestComparator();
private final EntityComparator entityComparator = new EntityComparator();
protected final MultiHarvestComparator harvestComparator = new MultiHarvestComparator();
protected final EntityComparator entityComparator = new EntityComparator();
protected String name;
protected ItemDarkSteelShears(String name) {
@@ -201,6 +202,14 @@ public class ItemDarkSteelShears extends ItemShears
return false;
}
@SubscribeEvent
public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) {
if (evt.originalSpeed > 2.0
&& isEquippedAndPowered(evt.entityPlayer, Config.darkSteelShearsPowerUsePerDamagePoint)) {
evt.newSpeed = evt.originalSpeed * Config.darkSteelShearsEffeciencyBoostWhenPowered;
}
}
@Override
public void setDamage(ItemStack stack, int newDamage) {
int oldDamage = getDamage(stack);
@@ -222,7 +231,6 @@ public class ItemDarkSteelShears extends ItemShears
protected void init() {
GameRegistry.registerItem(this, getUnlocalizedName());
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
@@ -322,15 +330,4 @@ public class ItemDarkSteelShears extends ItemShears
return 0;
}
}
public static class EventHandler {
@SubscribeEvent
public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) {
if (evt.originalSpeed > 2.0
&& isEquippedAndPowered(evt.entityPlayer, Config.darkSteelShearsPowerUsePerDamagePoint)) {
evt.newSpeed = evt.originalSpeed * Config.darkSteelShearsEffeciencyBoostWhenPowered;
}
}
}
}
@@ -72,6 +72,7 @@ public class ItemDarkSteelSword extends ItemSword
public static ItemDarkSteelSword create() {
ItemDarkSteelSword res = new ItemDarkSteelSword();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -116,6 +117,71 @@ public class ItemDarkSteelSword extends ItemSword
return false;
}
@SubscribeEvent
public void onEnderTeleport(EnderTeleportEvent evt) {
if (evt.entityLiving.getEntityData().getBoolean("hitByDarkSteelSword")) {
evt.setCanceled(true);
}
}
// Set priorty to lowest in the hope any other mod adding head drops will have already added them
// by the time this is called to prevent multiple head drops
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onEntityDrop(LivingDropsEvent evt) {
if (!(evt.source.getEntity() instanceof EntityPlayer)) {
return;
}
EntityPlayer player = (EntityPlayer) evt.source.getEntity();
// Handle TiC weapons with beheading differently
if (handleBeheadingWeapons(player, evt)) {
return;
}
double skullDropChance = getSkullDropChance(player, evt);
if (player instanceof FakePlayer) {
skullDropChance *= Config.fakePlayerSkullChance;
}
if (Math.random() <= skullDropChance) {
dropSkull(evt, player);
}
// Special handling for ender pear drops
if (isEquipped(player)) {
String name = EntityList.getEntityString(evt.entityLiving);
if (evt.entityLiving instanceof EntityEnderman || ENDERZOO_ENDERMINY.equals(name)) {
int numPearls = 0;
if (Math.random() <= Config.darkSteelSwordEnderPearlDropChance) {
numPearls++;
}
for (int i = 0; i < evt.lootingLevel; i++) {
if (Math.random() <= Config.darkSteelSwordEnderPearlDropChancePerLooting) {
numPearls++;
}
}
int existing = 0;
for (EntityItem stack : evt.drops) {
if (stack.getEntityItem() != null && stack.getEntityItem().getItem() == Items.ender_pearl) {
existing += stack.getEntityItem().stackSize;
}
}
int toDrop = numPearls - existing;
if (toDrop > 0) {
evt.drops.add(
Util.createDrop(
player.worldObj,
new ItemStack(Items.ender_pearl, toDrop, 0),
evt.entityLiving.posX,
evt.entityLiving.posY,
evt.entityLiving.posZ,
false));
}
}
}
}
protected void dropSkull(LivingDropsEvent evt, EntityPlayer player) {
ItemStack skull = getSkullForEntity(evt.entityLiving);
if (skull != null && !containsDrop(evt, skull)) {
@@ -226,7 +292,6 @@ public class ItemDarkSteelSword extends ItemSword
protected void init() {
GameRegistry.registerItem(this, getUnlocalizedName());
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
@@ -372,73 +437,4 @@ public class ItemDarkSteelSword extends ItemSword
return super.onItemRightClick(stack, world, player);
}
public class EventHandler {
@SubscribeEvent
public void onEnderTeleport(EnderTeleportEvent evt) {
if (evt.entityLiving.getEntityData().getBoolean("hitByDarkSteelSword")) {
evt.setCanceled(true);
}
}
// Set priorty to lowest in the hope any other mod adding head drops will have already added them
// by the time this is called to prevent multiple head drops
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onEntityDrop(LivingDropsEvent evt) {
if (!(evt.source.getEntity() instanceof EntityPlayer)) {
return;
}
EntityPlayer player = (EntityPlayer) evt.source.getEntity();
// Handle TiC weapons with beheading differently
if (handleBeheadingWeapons(player, evt)) {
return;
}
double skullDropChance = getSkullDropChance(player, evt);
if (player instanceof FakePlayer) {
skullDropChance *= Config.fakePlayerSkullChance;
}
if (Math.random() <= skullDropChance) {
dropSkull(evt, player);
}
// Special handling for ender pear drops
if (isEquipped(player)) {
String name = EntityList.getEntityString(evt.entityLiving);
if (evt.entityLiving instanceof EntityEnderman || ENDERZOO_ENDERMINY.equals(name)) {
int numPearls = 0;
if (Math.random() <= Config.darkSteelSwordEnderPearlDropChance) {
numPearls++;
}
for (int i = 0; i < evt.lootingLevel; i++) {
if (Math.random() <= Config.darkSteelSwordEnderPearlDropChancePerLooting) {
numPearls++;
}
}
int existing = 0;
for (EntityItem stack : evt.drops) {
if (stack.getEntityItem() != null && stack.getEntityItem().getItem() == Items.ender_pearl) {
existing += stack.getEntityItem().stackSize;
}
}
int toDrop = numPearls - existing;
if (toDrop > 0) {
evt.drops.add(
Util.createDrop(
player.worldObj,
new ItemStack(Items.ender_pearl, toDrop, 0),
evt.entityLiving.posX,
evt.entityLiving.posY,
evt.entityLiving.posZ,
false));
}
}
}
}
}
}
@@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -29,6 +30,7 @@ public class ItemEndSteelAxe extends ItemDarkSteelAxe implements IEndSteelItem {
public static ItemEndSteelAxe create() {
ItemEndSteelAxe res = new ItemEndSteelAxe();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -29,6 +30,7 @@ public class ItemEndSteelPickaxe extends ItemDarkSteelPickaxe implements IEndSte
public static ItemEndSteelPickaxe create() {
ItemEndSteelPickaxe res = new ItemEndSteelPickaxe();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.EnumHelper;
import cpw.mods.fml.relauncher.Side;
@@ -34,6 +35,7 @@ public class ItemEndSteelSword extends ItemDarkSteelSword implements IEndSteelIt
public static ItemEndSteelSword create() {
ItemEndSteelSword res = new ItemEndSteelSword();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -29,6 +30,7 @@ public class ItemStellarAxe extends ItemDarkSteelAxe implements IStellarItem {
public static ItemStellarAxe create() {
ItemStellarAxe res = new ItemStellarAxe();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -29,6 +30,7 @@ public class ItemStellarPickaxe extends ItemDarkSteelPickaxe implements IStellar
public static ItemStellarPickaxe create() {
ItemStellarPickaxe res = new ItemStellarPickaxe();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.EnumHelper;
import cpw.mods.fml.relauncher.Side;
@@ -34,6 +35,7 @@ public class ItemStellarSword extends ItemDarkSteelSword implements IStellarItem
public static ItemStellarSword create() {
ItemStellarSword res = new ItemStellarSword();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return res;
}
@@ -38,7 +38,7 @@ public class GuiAlloySmelter extends GuiPoweredMachineBase<TileAlloySmelter> {
vanillaFurnaceButton.setSize(BUTTON_SIZE, BUTTON_SIZE);
vanillaFurnaceTooltip = new GuiToolTip(
new Rectangle(xSize - 5 - BUTTON_SIZE, 43, BUTTON_SIZE, BUTTON_SIZE),
new Rectangle(xSize - 5 - BUTTON_SIZE, 62, BUTTON_SIZE, BUTTON_SIZE),
(String[]) null);
addProgressTooltip(55, 35, 14, 14);
@@ -93,6 +93,11 @@ public class GuiBuffer extends GuiPoweredMachineBase<TileBuffer> {
PacketHandler.INSTANCE.sendToServer(new PacketBufferIO(getTileEntity(), lastInput, lastOutput));
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
protected boolean renderPowerBar() {
return getTileEntity().hasPower();
@@ -271,9 +271,9 @@ public class BlockCapBank extends BlockEio
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister IIconRegister) {
blockIcon = IIconRegister.registerIcon("enderio:capacitorBank");
gaugeIcon = IIconRegister.registerIcon("enderio:capacitorBankOverlays");
fillBarIcon = IIconRegister.registerIcon("enderio:capacitorBankFillBar");
blockIcon = IIconRegister.registerIcon("enderio:capBank");
gaugeIcon = IIconRegister.registerIcon("enderio:capBankOverlays");
fillBarIcon = IIconRegister.registerIcon("enderio:capBankFillBar");
infoPanelIcon = IIconRegister.registerIcon("enderio:capBankInfoPanel");
blockIcons = new IIcon[CapBankType.types().size()];
@@ -17,11 +17,11 @@ public class CapBankType {
Config.capacitorBankTierTwoMaxStorageRF,
false,
true,
"enderio:capacitorBank",
"enderio:capacitorBankCreativeBorder",
"enderio:capacitorBankInput",
"enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
"enderio:capBank",
"enderio:capBankCreativeBorder",
"enderio:capBankInput",
"enderio:capBankOutput",
"enderio:capBankLocked");
public static final CapBankType SIMPLE = new CapBankType(
"SIMPLE",
@@ -30,11 +30,11 @@ public class CapBankType {
Config.capacitorBankTierOneMaxStorageRF,
true,
false,
"enderio:capacitorBank",
"enderio:capacitorBankSimpleBorder",
"enderio:capacitorBankInput",
"enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
"enderio:capBank",
"enderio:capBankSimpleBorder",
"enderio:capBankInput",
"enderio:capBankOutput",
"enderio:capBankLocked");
public static final CapBankType ACTIVATED = new CapBankType(
"ACTIVATED",
@@ -43,11 +43,11 @@ public class CapBankType {
Config.capacitorBankTierTwoMaxStorageRF,
true,
false,
"enderio:capacitorBank",
"enderio:capacitorBankActivatedBorder",
"enderio:capacitorBankInput",
"enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
"enderio:capBank",
"enderio:capBankActivatedBorder",
"enderio:capBankInput",
"enderio:capBankOutput",
"enderio:capBankLocked");
public static final CapBankType VIBRANT = new CapBankType(
"VIBRANT",
@@ -56,11 +56,11 @@ public class CapBankType {
Config.capacitorBankTierThreeMaxStorageRF,
true,
false,
"enderio:capacitorBank",
"enderio:capacitorBankVibrantBorder",
"enderio:capacitorBankInput",
"enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
"enderio:capBank",
"enderio:capBankVibrantBorder",
"enderio:capBankInput",
"enderio:capBankOutput",
"enderio:capBankLocked");
private static final List<CapBankType> TYPES = new ArrayList<CapBankType>();
@@ -89,9 +89,7 @@ public class ContainerCapBank extends ContainerEnderTileEntity<TileCapBank> {
}
if (hasBaublesSlots()) {
// for (int i = 0; i < baubles.getSizeInventory(); i++) {
// Capped since the sprite only has 4 slots
for (int i = 0; i < Math.min(baubles.getSizeInventory(), 4); i++) {
for (int i = 0; i < baubles.getSizeInventory(); i++) {
addSlotToContainer(new Slot(baubles, i, -15 + armorOffset, 84 + i * 18) {
@Override
@@ -124,9 +122,7 @@ public class ContainerCapBank extends ContainerEnderTileEntity<TileCapBank> {
int startHotBarSlot = endPlayerSlot + 1;
int endHotBarSlot = startHotBarSlot + 9;
int startBaublesSlot = endHotBarSlot + 1;
// int endBaublesSlot = baubles == null ? 0 : startBaublesSlot + baubles.getSizeInventory();
// Capped since the sprite only has 4 slots
int endBaublesSlot = baubles == null ? 0 : startBaublesSlot + Math.min(baubles.getSizeInventory(), 4);
int endBaublesSlot = baubles == null ? 0 : startBaublesSlot + baubles.getSizeInventory();
ItemStack copystack = null;
Slot slot = (Slot) inventorySlots.get(slotIndex);
@@ -75,7 +75,7 @@ public class GuiCapBank extends GuiContainerBaseEIO {
private final ContainerCapBank container;
public GuiCapBank(Entity player, InventoryPlayer playerInv, TileCapBank te) {
super(new ContainerCapBank(playerInv, te), "capacitorBank");
super(new ContainerCapBank(playerInv, te), "capBank");
capBank = te;
container = (ContainerCapBank) inventorySlots;
@@ -67,6 +67,11 @@ public class GuiCrafter extends GuiPoweredMachineBase<TileCrafter> {
}
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
public final int getXSize() {
return 219;
@@ -7,23 +7,34 @@ import net.minecraft.entity.player.InventoryPlayer;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.IconButton;
import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.GuiContainerBaseEIO;
import crazypants.enderio.gui.IconEIO;
public class GuiEnchanter extends GuiContainerBaseEIO {
private TileEnchanter te;
private ContainerEnchanter container;
private IconButton recipeButton;
public GuiEnchanter(EntityPlayer player, InventoryPlayer inventory, TileEnchanter te) {
super(new ContainerEnchanter(player, inventory, te), "enchanter");
container = (ContainerEnchanter) inventorySlots;
this.te = te;
recipeButton = new IconButton(this, 100, 154, 8, IconEIO.RECIPE);
recipeButton.visible = false;
recipeButton.setIconMargin(1, 1);
}
@Override
public void initGui() {
super.initGui();
container.createGhostSlots(getGhostSlots());
recipeButton.onGuiInit();
recipeButton.visible = EnderIO.proxy.isNeiInstalled();
((ContainerEnchanter) inventorySlots).createGhostSlots(getGhostSlots());
}
@Override
@@ -34,6 +45,10 @@ public class GuiEnchanter extends GuiContainerBaseEIO {
int sy = (height - ySize) / 2;
drawTexturedModalRect(sx, sy, 0, 0, this.xSize, this.ySize);
if (EnderIO.proxy.isNeiInstalled()) {
IconEIO.map.render(IconEIO.RECIPE, sx + 155, sy + 8, 16, 16, 0, true);
}
int curCost = te.getCurrentEnchantmentCost();
if (curCost > 0) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -138,6 +138,11 @@ public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
super.actionPerformed(b);
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
protected String getPowerOutputLabel() {
return EnderIO.lang.localize("farm.gui.baseUse");
@@ -17,9 +17,7 @@ import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.util.ForgeDirection;
import com.enderio.core.common.util.BlockCoord;
import com.mitchej123.hodgepodge.mixins.interfaces.INetherSeed;
import crazypants.enderio.EnderIO;
import crazypants.enderio.machine.farm.TileFarmStation;
public class PlantableFarmer implements IFarmerJoe {
@@ -111,13 +109,7 @@ public class PlantableFarmer implements IFarmerJoe {
protected boolean plant(TileFarmStation farm, World worldObj, BlockCoord bc, IPlantable plantable) {
worldObj.setBlock(bc.x, bc.y, bc.z, Blocks.air, 0, 1 | 2);
Block target;
// needed for Pam's nether seeds
if (EnderIO.hasHP && plantable instanceof INetherSeed netherSeed) {
target = netherSeed.hodgepodge$getPlant(null, 0, 0, 0);
} else {
target = plantable.getPlant(null, 0, 0, 0);
}
Block target = plantable.getPlant(null, 0, 0, 0);
int meta = plantable.getPlantMetadata(null, 0, 0, 0);
worldObj.setBlock(bc.x, bc.y, bc.z, target, meta, 1 | 2);
farm.actionPerformed(false);
@@ -125,13 +117,7 @@ public class PlantableFarmer implements IFarmerJoe {
}
protected boolean canPlant(World worldObj, BlockCoord bc, IPlantable plantable) {
Block target;
// needed for Pam's nether seeds
if (EnderIO.hasHP && plantable instanceof INetherSeed netherSeed) {
target = netherSeed.hodgepodge$getPlant(null, 0, 0, 0);
} else {
target = plantable.getPlant(null, 0, 0, 0);
}
Block target = plantable.getPlant(null, 0, 0, 0);
Block ground = worldObj.getBlock(bc.x, bc.y - 1, bc.z);
if (target != null && target.canPlaceBlockAt(worldObj, bc.x, bc.y, bc.z)
&& target.canBlockStay(worldObj, bc.x, bc.y, bc.z)
@@ -196,14 +182,10 @@ public class PlantableFarmer implements IFarmerJoe {
}
private boolean isPlantableForBlock(ItemStack stack, Block block) {
if (stack.getItem() instanceof IPlantable plantable) {
// needed for Pam's nether seeds
if (EnderIO.hasHP && plantable instanceof INetherSeed netherSeed) {
return netherSeed.hodgepodge$getPlant(null, 0, 0, 0) == block;
} else {
return plantable.getPlant(null, 0, 0, 0) == block;
}
if (!(stack.getItem() instanceof IPlantable)) {
return false;
}
return false;
IPlantable plantable = (IPlantable) stack.getItem();
return plantable.getPlant(null, 0, 0, 0) == block;
}
}
@@ -52,6 +52,11 @@ public class GuiCombustionGenerator extends GuiPoweredMachineBase<TileCombustion
});
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
public void renderSlotHighlights(IoMode mode) {
super.renderSlotHighlights(mode);
@@ -58,6 +58,11 @@ public class GuiStirlingGenerator extends GuiPoweredMachineBase<TileEntityStirli
return fmt.format(args, new StringBuffer(), null).toString();
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
protected String formatProgressTooltip(int scaledProgress, float remaining) {
int totalBurnTime = getTileEntity().totalBurnTime;
@@ -41,6 +41,11 @@ public class GuiZombieGenerator extends GuiPoweredMachineBase<TileZombieGenerato
});
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
public void renderSlotHighlights(IoMode mode) {
super.renderSlotHighlights(mode);
@@ -12,6 +12,7 @@ import net.minecraft.inventory.Slot;
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;
@@ -21,6 +22,7 @@ import com.enderio.core.common.vecmath.Vector4f;
import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.GuiContainerBaseEIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.gui.IoConfigRenderer.SelectedFace;
import crazypants.enderio.gui.RedstoneModeButton;
import crazypants.enderio.machine.AbstractMachineEntity;
@@ -44,6 +46,8 @@ public abstract class GuiMachineBase<T extends AbstractMachineEntity> extends Gu
protected final GuiButtonIoConfig configB;
protected IconButton recipeButton;
protected List<GuiToolTip> progressTooltips;
protected int lastProgressTooltipValue = -1;
@@ -62,6 +66,11 @@ public abstract class GuiMachineBase<T extends AbstractMachineEntity> extends Gu
y += 19;
configB = new GuiButtonIoConfig(this, CONFIG_ID, x, y, machine, configOverlay);
y += 19;
recipeButton = new IconButton(this, RECIPE_ID, x, y, IconEIO.RECIPE);
recipeButton.visible = false;
recipeButton.setIconMargin(1, 1);
}
@Override
@@ -69,6 +78,11 @@ public abstract class GuiMachineBase<T extends AbstractMachineEntity> extends Gu
super.initGui();
redstoneButton.onGuiInit();
configB.onGuiInit();
recipeButton.onGuiInit();
}
protected boolean showRecipeButton() {
return EnderIO.proxy.isNeiInstalled();
}
@Override
@@ -82,6 +96,10 @@ public abstract class GuiMachineBase<T extends AbstractMachineEntity> extends Gu
guibutton.drawButton(mc, 0, 0);
}
if (showRecipeButton()) {
recipeButton.visible = true;
}
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
renderSlotHighlights();
@@ -536,6 +536,11 @@ public class GuiInventoryPanel extends GuiMachineBase<TileInventoryPanel> {
}
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
public int getXSize() {
return 280;
@@ -28,7 +28,9 @@ public class BlockKillerJoe extends AbstractMachineBlock<TileKillerJoe> {
.registerMessage(PacketSwing.class, PacketSwing.class, PacketHandler.nextID(), Side.CLIENT);
PacketGivePlayerXP.register();
PacketExperianceContainer.register();
BlockKillerJoe res = new BlockKillerJoe();
MinecraftForge.EVENT_BUS.register(res);
res.init();
return res;
}
@@ -38,18 +40,19 @@ public class BlockKillerJoe extends AbstractMachineBlock<TileKillerJoe> {
setStepSound(Block.soundTypeGlass);
}
@Override
protected void init() {
super.init();
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX,
double explosionY, double explosionZ) {
return 2000;
}
@SubscribeEvent
public void getKillDisplayName(PlayerEvent.NameFormat nameEvt) {
if (nameEvt.username != null && nameEvt.username.startsWith(USERNAME)) {
nameEvt.displayname = getLocalizedName();
}
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerKillerJoe(player.inventory, (TileKillerJoe) world.getTileEntity(x, y, z));
@@ -98,14 +101,4 @@ public class BlockKillerJoe extends AbstractMachineBlock<TileKillerJoe> {
return 5;
}
}
public class EventHandler {
@SubscribeEvent
public void getKillDisplayName(PlayerEvent.NameFormat nameEvt) {
if (nameEvt.username != null && nameEvt.username.startsWith(USERNAME)) {
nameEvt.displayname = getLocalizedName();
}
}
}
}
@@ -102,6 +102,11 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
}
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
public void renderSlotHighlights(IoMode mode) {
super.renderSlotHighlights(mode);
@@ -76,4 +76,8 @@ public class GuiAttractor extends GuiPoweredMachineBase<TileAttractor> {
ColorUtil.getRGB(Color.white));
}
@Override
protected boolean showRecipeButton() {
return false;
}
}
@@ -75,4 +75,8 @@ public class GuiAversionObelisk extends GuiPoweredMachineBase<TileAversionObelis
}
}
@Override
protected boolean showRecipeButton() {
return false;
}
}
@@ -25,6 +25,7 @@ public class BlockInhibitorObelisk extends BlockObeliskAbstract<TileInhibitorObe
public static BlockInhibitorObelisk create() {
BlockInhibitorObelisk res = new BlockInhibitorObelisk();
res.init();
MinecraftForge.EVENT_BUS.register(res);
return instance = res;
}
@@ -32,12 +33,6 @@ public class BlockInhibitorObelisk extends BlockObeliskAbstract<TileInhibitorObe
super(ModObject.blockInhibitorObelisk, TileInhibitorObelisk.class);
}
@Override
protected void init() {
super.init();
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return ID == getGuiId()
@@ -63,18 +58,15 @@ public class BlockInhibitorObelisk extends BlockObeliskAbstract<TileInhibitorObe
public Map<BlockCoord, Float> activeInhibitors = Maps.newHashMap();
public class EventHandler {
@SubscribeEvent
public void onTeleport(TeleportEntityEvent event) {
for (Entry<BlockCoord, Float> e : activeInhibitors.entrySet()) {
BlockCoord bc = e.getKey();
int dist = bc.getDist(new BlockCoord(event.targetX, event.targetY, event.targetZ));
if (dist < e.getValue()) {
TileEntity te = bc.getTileEntity(event.entity.worldObj);
if (te instanceof TileInhibitorObelisk && ((TileInhibitorObelisk) te).isActive()) {
event.setCanceled(true);
}
@SubscribeEvent
public void onTeleport(TeleportEntityEvent event) {
for (Entry<BlockCoord, Float> e : activeInhibitors.entrySet()) {
BlockCoord bc = e.getKey();
int dist = bc.getDist(new BlockCoord(event.targetX, event.targetY, event.targetZ));
if (dist < e.getValue()) {
TileEntity te = bc.getTileEntity(event.entity.worldObj);
if (te instanceof TileInhibitorObelisk && ((TileInhibitorObelisk) te).isActive()) {
event.setCanceled(true);
}
}
}
@@ -113,6 +113,11 @@ public class GuiWeatherObelisk extends GuiPoweredMachineBase<TileWeatherObelisk>
return WeatherTask.fromFluid(fs.getFluid());
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) {
bindGuiTexture();
@@ -157,4 +157,8 @@ public class GuiExperienceObelisk extends GuiMachineBase<TileExperienceObelisk>
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
}
@Override
protected boolean showRecipeButton() {
return false;
}
}
@@ -199,7 +199,7 @@ public class BlockPaintedGlowstone extends BlockEio
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister IIconRegister) {
blockIcon = IIconRegister.registerIcon("glowstone");
blockIcon = IIconRegister.registerIcon("enderio:conduitConnector");
}
@Override
@@ -231,12 +231,10 @@ public class BlockPaintedGlowstone extends BlockEio
@Override
protected void processDrop(World world, int x, int y, int z, TileEntityEnder te, ItemStack drop) {
if (te instanceof TileEntityPaintedBlock tef) {
TileEntityPaintedBlock tef = (TileEntityPaintedBlock) te;
if (tef != null) {
ItemStack itemStack = createItemStackForSourceBlock(tef.getSourceBlock(), tef.getSourceBlockMetadata());
NBTTagCompound tag = itemStack.stackTagCompound;
if (tag != null) {
drop.stackTagCompound = (NBTTagCompound) tag.copy();
}
drop.stackTagCompound = (NBTTagCompound) itemStack.stackTagCompound.copy();
}
}
@@ -39,6 +39,11 @@ public class GuiPainter extends GuiPoweredMachineBase<TileEntityPainter> {
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
protected void renderSlotHighlight(int slot, Vector4f col) {
if (getTileEntity().getSlotDefinition().isOutputSlot(slot)) {
@@ -63,8 +63,7 @@ public final class PainterUtil {
sourceName = is.getDisplayName();
}
}
return EnderIO.lang.localize("blockPainter.paintedWith") + " "
+ (sourceName.isEmpty() ? EnderIO.lang.localize("blockPainter.paintedWith.none") : sourceName);
return EnderIO.lang.localize("blockPainter.paintedWith") + " " + sourceName;
}
public static void setSourceBlock(ItemStack item, Block source, int meta) {
@@ -89,6 +89,8 @@ public class BlockPoweredSpawner extends AbstractMachineBlock<TilePoweredSpawner
PoweredSpawnerConfig.getInstance();
BlockPoweredSpawner res = new BlockPoweredSpawner();
MinecraftForge.EVENT_BUS.register(res);
FMLCommonHandler.instance().bus().register(res);
res.init();
return res;
}
@@ -113,15 +115,143 @@ public class BlockPoweredSpawner extends AbstractMachineBlock<TilePoweredSpawner
}
}
@Override
protected void init() {
super.init();
EventHandler handler = new EventHandler();
MinecraftForge.EVENT_BUS.register(handler);
FMLCommonHandler.instance().bus().register(handler);
private final Map<BlockCoord, ItemStack> dropCache = new HashMap<BlockCoord, ItemStack>();
@SubscribeEvent
public void onBreakEvent(BlockEvent.BreakEvent evt) {
if (evt.block instanceof BlockMobSpawner) {
if (evt.getPlayer() != null && !evt.getPlayer().capabilities.isCreativeMode
&& !evt.getPlayer().worldObj.isRemote
&& !evt.isCanceled()) {
TileEntity tile = evt.getPlayer().worldObj.getTileEntity(evt.x, evt.y, evt.z);
if (tile instanceof TileEntityMobSpawner) {
if (Math.random() > Config.brokenSpawnerDropChance) {
return;
}
ItemStack equipped = evt.getPlayer().getCurrentEquippedItem();
if (equipped != null) {
for (UniqueIdentifier uid : toolBlackList) {
Item blackListItem = GameRegistry.findItem(uid.modId, uid.name);
if (blackListItem == equipped.getItem()) {
return;
}
}
}
TileEntityMobSpawner spawner = (TileEntityMobSpawner) tile;
MobSpawnerBaseLogic logic = spawner.func_145881_a();
if (logic != null) {
String name = logic.getEntityNameToSpawn();
if (name != null && !isBlackListed(name)) {
ItemStack drop = ItemBrokenSpawner.createStackForMobType(name);
dropCache.put(new BlockCoord(evt.x, evt.y, evt.z), drop);
for (int i = (int) (Math.random() * 7); i > 0; i--) {
logic.spawnDelay = 0;
logic.updateSpawner();
}
}
}
}
} else {
dropCache.put(new BlockCoord(evt.x, evt.y, evt.z), null);
}
}
}
private final Map<BlockCoord, ItemStack> dropCache = new HashMap<BlockCoord, ItemStack>();
@SubscribeEvent
public void onHarvestDropsEvent(BlockEvent.HarvestDropsEvent evt) {
if (!evt.isCanceled() && evt.block instanceof BlockMobSpawner) {
BlockCoord bc = new BlockCoord(evt.x, evt.y, evt.z);
if (dropCache.containsKey(bc)) {
ItemStack stack = dropCache.get(bc);
if (stack != null) {
evt.drops.add(stack);
}
} else {
// A spawner was broken---but not by a player. The TE has been
// invalidated already, but we might be able to recover it.
try {
for (Object object : evt.world.loadedTileEntityList) {
if (object instanceof TileEntityMobSpawner) {
TileEntityMobSpawner spawner = (TileEntityMobSpawner) object;
if (spawner.getWorldObj() == evt.world && spawner.xCoord == evt.x
&& spawner.yCoord == evt.y
&& spawner.zCoord == evt.z) {
// Bingo!
MobSpawnerBaseLogic logic = spawner.func_145881_a();
if (logic != null) {
String name = logic.getEntityNameToSpawn();
if (name != null && !isBlackListed(name)) {
evt.drops.add(ItemBrokenSpawner.createStackForMobType(name));
}
}
}
}
}
} catch (Exception e) {
// Risky recovery failed. Happens.
}
}
}
}
@SubscribeEvent
public void onServerTick(TickEvent.ServerTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
dropCache.clear();
}
}
@SubscribeEvent
public void handleAnvilEvent(AnvilUpdateEvent evt) {
if (evt.left == null || evt.left.stackSize != 1
|| evt.left.getItem() != Item.getItemFromBlock(EnderIO.blockPoweredSpawner)
|| evt.right == null
|| ItemBrokenSpawner.getMobTypeFromStack(evt.right) == null) {
return;
}
String spawnerType = ItemBrokenSpawner.getMobTypeFromStack(evt.right);
if (isBlackListed(spawnerType)) {
return;
}
evt.cost = Config.powerSpawnerAddSpawnerCost;
evt.output = evt.left.copy();
if (evt.output.stackTagCompound == null) {
evt.output.stackTagCompound = new NBTTagCompound();
}
evt.output.stackTagCompound.setBoolean("eio.abstractMachine", true);
writeMobTypeToNBT(evt.output.stackTagCompound, spawnerType);
}
@SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent livingUpdate) {
Entity ent = livingUpdate.entityLiving;
if (!ent.getEntityData().hasKey(KEY_SPAWNED_BY_POWERED_SPAWNER)) {
return;
}
if (fieldpersistenceRequired == null) {
ent.getEntityData().removeTag(KEY_SPAWNED_BY_POWERED_SPAWNER);
return;
}
long spawnTime = ent.getEntityData().getLong(KEY_SPAWNED_BY_POWERED_SPAWNER);
long livedFor = livingUpdate.entity.worldObj.getTotalWorldTime() - spawnTime;
if (livedFor > Config.poweredSpawnerDespawnTimeSeconds * 20) {
try {
fieldpersistenceRequired.setBoolean(livingUpdate.entityLiving, false);
ent.getEntityData().removeTag(KEY_SPAWNED_BY_POWERED_SPAWNER);
} catch (Exception e) {
Log.warn("BlockPoweredSpawner.onLivingUpdate: Error occured allowing entity to despawn: " + e);
ent.getEntityData().removeTag(KEY_SPAWNED_BY_POWERED_SPAWNER);
}
}
}
public boolean isBlackListed(String entityId) {
return PoweredSpawnerConfig.getInstance().isBlackListed(entityId);
@@ -232,144 +362,4 @@ public class BlockPoweredSpawner extends AbstractMachineBlock<TilePoweredSpawner
Util.dropItems(evt.getPlayer().worldObj, drop, evt.x, evt.y, evt.z, true);
}
}
public class EventHandler {
@SubscribeEvent
public void onBreakEvent(BlockEvent.BreakEvent evt) {
if (evt.block instanceof BlockMobSpawner) {
if (evt.getPlayer() != null && !evt.getPlayer().capabilities.isCreativeMode
&& !evt.getPlayer().worldObj.isRemote
&& !evt.isCanceled()) {
TileEntity tile = evt.getPlayer().worldObj.getTileEntity(evt.x, evt.y, evt.z);
if (tile instanceof TileEntityMobSpawner) {
if (Math.random() > Config.brokenSpawnerDropChance) {
return;
}
ItemStack equipped = evt.getPlayer().getCurrentEquippedItem();
if (equipped != null) {
for (UniqueIdentifier uid : toolBlackList) {
Item blackListItem = GameRegistry.findItem(uid.modId, uid.name);
if (blackListItem == equipped.getItem()) {
return;
}
}
}
TileEntityMobSpawner spawner = (TileEntityMobSpawner) tile;
MobSpawnerBaseLogic logic = spawner.func_145881_a();
if (logic != null) {
String name = logic.getEntityNameToSpawn();
if (name != null && !isBlackListed(name)) {
ItemStack drop = ItemBrokenSpawner.createStackForMobType(name);
dropCache.put(new BlockCoord(evt.x, evt.y, evt.z), drop);
for (int i = (int) (Math.random() * 7); i > 0; i--) {
logic.spawnDelay = 0;
logic.updateSpawner();
}
}
}
}
} else {
dropCache.put(new BlockCoord(evt.x, evt.y, evt.z), null);
}
}
}
@SubscribeEvent
public void onHarvestDropsEvent(BlockEvent.HarvestDropsEvent evt) {
if (!evt.isCanceled() && evt.block instanceof BlockMobSpawner) {
BlockCoord bc = new BlockCoord(evt.x, evt.y, evt.z);
if (dropCache.containsKey(bc)) {
ItemStack stack = dropCache.get(bc);
if (stack != null) {
evt.drops.add(stack);
}
} else {
// A spawner was broken---but not by a player. The TE has been
// invalidated already, but we might be able to recover it.
try {
for (Object object : evt.world.loadedTileEntityList) {
if (object instanceof TileEntityMobSpawner) {
TileEntityMobSpawner spawner = (TileEntityMobSpawner) object;
if (spawner.getWorldObj() == evt.world && spawner.xCoord == evt.x
&& spawner.yCoord == evt.y
&& spawner.zCoord == evt.z) {
// Bingo!
MobSpawnerBaseLogic logic = spawner.func_145881_a();
if (logic != null) {
String name = logic.getEntityNameToSpawn();
if (name != null && !isBlackListed(name)) {
evt.drops.add(ItemBrokenSpawner.createStackForMobType(name));
}
}
}
}
}
} catch (Exception e) {
// Risky recovery failed. Happens.
}
}
}
}
@SubscribeEvent
public void onServerTick(TickEvent.ServerTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
dropCache.clear();
}
}
@SubscribeEvent
public void handleAnvilEvent(AnvilUpdateEvent evt) {
if (evt.left == null || evt.left.stackSize != 1
|| evt.left.getItem() != Item.getItemFromBlock(EnderIO.blockPoweredSpawner)
|| evt.right == null
|| ItemBrokenSpawner.getMobTypeFromStack(evt.right) == null) {
return;
}
String spawnerType = ItemBrokenSpawner.getMobTypeFromStack(evt.right);
if (isBlackListed(spawnerType)) {
return;
}
evt.cost = Config.powerSpawnerAddSpawnerCost;
evt.output = evt.left.copy();
if (evt.output.stackTagCompound == null) {
evt.output.stackTagCompound = new NBTTagCompound();
}
evt.output.stackTagCompound.setBoolean("eio.abstractMachine", true);
writeMobTypeToNBT(evt.output.stackTagCompound, spawnerType);
}
@SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent livingUpdate) {
Entity ent = livingUpdate.entityLiving;
if (!ent.getEntityData().hasKey(KEY_SPAWNED_BY_POWERED_SPAWNER)) {
return;
}
if (fieldpersistenceRequired == null) {
ent.getEntityData().removeTag(KEY_SPAWNED_BY_POWERED_SPAWNER);
return;
}
long spawnTime = ent.getEntityData().getLong(KEY_SPAWNED_BY_POWERED_SPAWNER);
long livedFor = livingUpdate.entity.worldObj.getTotalWorldTime() - spawnTime;
if (livedFor > Config.poweredSpawnerDespawnTimeSeconds * 20) {
try {
fieldpersistenceRequired.setBoolean(livingUpdate.entityLiving, false);
ent.getEntityData().removeTag(KEY_SPAWNED_BY_POWERED_SPAWNER);
} catch (Exception e) {
Log.warn("BlockPoweredSpawner.onLivingUpdate: Error occured allowing entity to despawn: " + e);
ent.getEntityData().removeTag(KEY_SPAWNED_BY_POWERED_SPAWNER);
}
}
}
}
}
@@ -132,4 +132,8 @@ public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner>
}
}
@Override
protected boolean showRecipeButton() {
return false;
}
}
@@ -112,6 +112,11 @@ public class GuiTank extends GuiMachineBase<TileTank> {
}
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -51,6 +51,11 @@ public class GuiTransceiver extends GuiPoweredMachineBase<TileTransceiver> {
generalTab.updatePowerBarTooltip(text);
}
@Override
protected boolean showRecipeButton() {
return false;
}
@Override
public int getXSize() {
return ContainerTransceiver.GUI_WIDTH;
@@ -1,6 +1,5 @@
package crazypants.enderio.material;
import static crazypants.enderio.EnderIO.hasGT5;
import static crazypants.enderio.material.Alloy.DARK_STEEL;
import static crazypants.enderio.material.Alloy.END_STEEL;
import static crazypants.enderio.material.Alloy.ENERGETIC_ALLOY;
@@ -59,13 +58,10 @@ public class MaterialRecipes {
public static void registerOresInDictionary() {
// Ore Dictionary Registration
if (!hasGT5) {
for (PowderIngot powder : PowderIngot.values()) {
if (!powder.hasDependancy()) {
OreDictionary.registerOre(
powder.oreDictName,
new ItemStack(EnderIO.itemPowderIngot, 1, powder.ordinal()));
}
for (PowderIngot powder : PowderIngot.values()) {
if (!powder.hasDependancy()) {
OreDictionary
.registerOre(powder.oreDictName, new ItemStack(EnderIO.itemPowderIngot, 1, powder.ordinal()));
}
}
@@ -435,19 +431,17 @@ public class MaterialRecipes {
RecipeUtil.addShaped(vibCry, "nnn", "ngn", "nnn", 'n', vibrantNugget, 'g', "gemEmerald");
// Smelting
if (!hasGT5) {
ItemStack dustIron = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_IRON.ordinal());
ItemStack dustGold = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_GOLD.ordinal());
ItemStack ingotIron = new ItemStack(Items.iron_ingot);
ItemStack ingotGold = new ItemStack(Items.gold_ingot);
ItemStack dustIron = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_IRON.ordinal());
ItemStack dustGold = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_GOLD.ordinal());
ItemStack ingotIron = new ItemStack(Items.iron_ingot);
ItemStack ingotGold = new ItemStack(Items.gold_ingot);
GameRegistry.addSmelting(dustIron, ingotIron, 0);
GameRegistry.addSmelting(dustGold, ingotGold, 0);
GameRegistry.addSmelting(dustIron, ingotIron, 0);
GameRegistry.addSmelting(dustGold, ingotGold, 0);
// Ender Dusts
ItemStack enderDust = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_ENDER.ordinal());
RecipeUtil.addShaped(new ItemStack(Items.ender_pearl), "eee", "eee", "eee", 'e', enderDust);
}
// Ender Dusts
ItemStack enderDust = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_ENDER.ordinal());
RecipeUtil.addShaped(new ItemStack(Items.ender_pearl), "eee", "eee", "eee", 'e', enderDust);
// Dark Iron Bars
ItemStack diBars = new ItemStack(EnderIO.blockDarkIronBars, 16, 0);
@@ -570,29 +564,24 @@ public class MaterialRecipes {
ItemStack darkRod = new ItemStack(EnderIO.itemMaterial, 1, Material.DARK_STEEL_ROD.ordinal());
RecipeUtil.addShaped(darkRod, " ns", "nsn", "sn ", 's', darkSteel, 'n', endSteelNugget);
if (!hasGT5) {
// Food
ItemStack flour = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.FLOUR.ordinal());
ItemStack bread = new ItemStack(Items.bread, 1, 0);
// Food
ItemStack flour = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.FLOUR.ordinal());
ItemStack bread = new ItemStack(Items.bread, 1, 0);
GameRegistry.addSmelting(flour, bread, 0.35f);
}
GameRegistry.addSmelting(flour, bread, 0.35f);
ItemStack enderios = EnderFood.ENDERIOS.getStack();
RecipeUtil.addShapeless(enderios, Items.bowl, Items.milk_bucket, "cropWheat", "dustEnderPearl");
if (!hasGT5) {
if (OreDictionaryHelper.hasCopper()) {
ItemStack dustCopper = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_COPPER.ordinal());
ItemStack ingotCoppper = OreDictionaryPreferences.instance
.getPreferred(OreDictionaryHelper.INGOT_COPPER);
GameRegistry.addSmelting(dustCopper, ingotCoppper, 0);
}
if (OreDictionaryHelper.hasTin()) {
ItemStack dustTin = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_TIN.ordinal());
ItemStack ingotTin = OreDictionaryPreferences.instance.getPreferred(OreDictionaryHelper.INGOT_TIN);
GameRegistry.addSmelting(dustTin, ingotTin, 0);
}
if (OreDictionaryHelper.hasCopper()) {
ItemStack dustCopper = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_COPPER.ordinal());
ItemStack ingotCoppper = OreDictionaryPreferences.instance.getPreferred(OreDictionaryHelper.INGOT_COPPER);
GameRegistry.addSmelting(dustCopper, ingotCoppper, 0);
}
if (OreDictionaryHelper.hasTin()) {
ItemStack dustTin = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_TIN.ordinal());
ItemStack ingotTin = OreDictionaryPreferences.instance.getPreferred(OreDictionaryHelper.INGOT_TIN);
GameRegistry.addSmelting(dustTin, ingotTin, 0);
}
}
}
@@ -11,12 +11,14 @@ import net.minecraftforge.oredict.OreDictionary;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.render.EnderWidget;
import com.enderio.core.common.util.ItemUtil;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.ItemList;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.alloy.AlloyRecipeManager;
import crazypants.enderio.machine.alloy.GuiAlloySmelter;
import crazypants.enderio.machine.recipe.IRecipe;
@@ -49,7 +51,7 @@ public class AlloySmelterRecipeHandler extends TemplateRecipeHandler {
public void loadTransferRects() {
transferRects.add(
new TemplateRecipeHandler.RecipeTransferRect(
new Rectangle(72, 19, 22, 19),
new Rectangle(149, 32, 16, 16),
"EnderIOAlloySmelter",
new Object[0]));
}
@@ -115,6 +117,10 @@ public class AlloySmelterRecipeHandler extends TemplateRecipeHandler {
AlloySmelterRecipe recipe = (AlloySmelterRecipe) arecipes.get(recipeIndex);
String energyString = PowerDisplayUtil.formatPower(recipe.getEnergy()) + " " + PowerDisplayUtil.abrevation();
GuiDraw.drawString(energyString, 100, 52, 0x808080, false);
int x = 149, y = 32;
EnderWidget.map.render(EnderWidget.BUTTON, x, y, 16, 16, 0, true);
IconEIO.map.render(IconEIO.RECIPE, x + 1, y + 1, 14, 14, 0, true);
}
public List<ItemStack> getInputs(RecipeInput input) {
@@ -15,10 +15,13 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import com.enderio.core.client.render.EnderWidget;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler;
import crazypants.enderio.gui.GuiContainerBaseEIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.enchanter.EnchanterRecipe;
import crazypants.enderio.machine.enchanter.EnchanterRecipeManager;
import crazypants.enderio.machine.enchanter.GuiEnchanter;
@@ -51,7 +54,7 @@ public class EnchanterRecipeHandler extends TemplateRecipeHandler {
public void loadTransferRects() {
transferRects.add(
new TemplateRecipeHandler.RecipeTransferRect(
new Rectangle(97, 24, 22, 17),
new Rectangle(149, -3, 16, 16),
"EIOEnchanter",
new Object[0]));
}
@@ -128,6 +131,9 @@ public class EnchanterRecipeHandler extends TemplateRecipeHandler {
GuiDraw.drawStringC(s, 83, 46, 0x80FF20);
}
int x = 149, y = -3;
EnderWidget.map.render(EnderWidget.BUTTON, x, y, 16, 16, 0, true);
IconEIO.map.render(IconEIO.RECIPE, x + 1, y + 1, 14, 14, 0, true);
}
public List<ItemStack> getInputs(RecipeInput input) {
@@ -7,13 +7,9 @@ import codechicken.nei.api.IConfigureNEI;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.gas.GasUtil;
import crazypants.enderio.config.Config;
import crazypants.enderio.machine.alloy.GuiAlloySmelter;
import crazypants.enderio.machine.crusher.GuiCrusher;
import crazypants.enderio.machine.invpanel.GuiInventoryPanel;
import crazypants.enderio.machine.invpanel.client.InventoryPanelNEIOverlayHandler;
import crazypants.enderio.machine.painter.PainterUtil;
import crazypants.enderio.machine.slicensplice.GuiSliceAndSplice;
import crazypants.enderio.machine.soul.GuiSoulBinder;
public class NEIEnderIOConfig implements IConfigureNEI {
@@ -21,11 +17,9 @@ public class NEIEnderIOConfig implements IConfigureNEI {
public void loadConfig() {
API.registerRecipeHandler(new AlloySmelterRecipeHandler());
API.registerUsageHandler(new AlloySmelterRecipeHandler());
API.setGuiOffset(GuiAlloySmelter.class, 4, 6);
API.registerRecipeHandler(new SagMillRecipeHandler());
API.registerUsageHandler(new SagMillRecipeHandler());
API.setGuiOffset(GuiCrusher.class, 6, 11);
API.registerRecipeHandler(new VatRecipeHandler());
API.registerUsageHandler(new VatRecipeHandler());
@@ -35,11 +29,9 @@ public class NEIEnderIOConfig implements IConfigureNEI {
API.registerRecipeHandler(new SliceAndSpliceRecipeHandler());
API.registerUsageHandler(new SliceAndSpliceRecipeHandler());
API.setGuiOffset(GuiSliceAndSplice.class, 13, 11);
API.registerRecipeHandler(new SoulBinderRecipeHandler());
API.registerUsageHandler(new SoulBinderRecipeHandler());
API.setGuiOffset(GuiSoulBinder.class, 11, 11);
API.registerGuiOverlayHandler(GuiInventoryPanel.class, new InventoryPanelNEIOverlayHandler(), "crafting");
@@ -14,10 +14,13 @@ import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.render.EnderWidget;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.TemplateRecipeHandler;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.crusher.CrusherRecipeManager;
import crazypants.enderio.machine.crusher.GrindingBall;
import crazypants.enderio.machine.crusher.GuiCrusher;
@@ -58,7 +61,7 @@ public class SagMillRecipeHandler extends TemplateRecipeHandler {
public void loadTransferRects() {
transferRects.add(
new TemplateRecipeHandler.RecipeTransferRect(
new Rectangle(74, 21, 17, 22),
new Rectangle(149, 32, 16, 16),
"EnderIOSagMill",
new Object[0]));
}
@@ -124,6 +127,10 @@ public class SagMillRecipeHandler extends TemplateRecipeHandler {
MillRecipe recipe = (MillRecipe) arecipes.get(recipeIndex);
String energyString = PowerDisplayUtil.formatPower(recipe.getEnergy()) + " " + PowerDisplayUtil.abrevation();
GuiDraw.drawString(energyString, 96, 33, 0x808080, false);
int x = 149, y = 32;
EnderWidget.map.render(EnderWidget.BUTTON, x, y, 16, 16, 0, true);
IconEIO.map.render(IconEIO.RECIPE, x + 1, y + 1, 14, 14, 0, true);
}
@Override
@@ -12,10 +12,13 @@ import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.render.EnderWidget;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler;
import crazypants.enderio.gui.GuiContainerBaseEIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.recipe.IRecipe;
import crazypants.enderio.machine.recipe.RecipeInput;
import crazypants.enderio.machine.slicensplice.ContainerSliceAndSplice;
@@ -49,7 +52,7 @@ public class SliceAndSpliceRecipeHandler extends TemplateRecipeHandler {
public void loadTransferRects() {
transferRects.add(
new TemplateRecipeHandler.RecipeTransferRect(
new Rectangle(91, 37, 22, 17),
new Rectangle(149, 32, 16, 16),
"EnderIOSliceAndSplice",
new Object[0]));
}
@@ -110,6 +113,10 @@ public class SliceAndSpliceRecipeHandler extends TemplateRecipeHandler {
SliceAndSpliceRecipe recipe = (SliceAndSpliceRecipe) arecipes.get(recipeIndex);
String energyString = PowerDisplayUtil.formatPower(recipe.getEnergy()) + " " + PowerDisplayUtil.abrevation();
GuiDraw.drawString(energyString, 100, 57, 0x808080, false);
int x = 149, y = 32;
EnderWidget.map.render(EnderWidget.BUTTON, x, y, 16, 16, 0, true);
IconEIO.map.render(IconEIO.RECIPE, x + 1, y + 1, 14, 14, 0, true);
}
public List<ItemStack> getInputs(RecipeInput input) {
@@ -13,12 +13,15 @@ import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.render.EnderWidget;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.gui.GuiContainerBaseEIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.IMachineRecipe;
import crazypants.enderio.machine.MachineRecipeRegistry;
import crazypants.enderio.machine.soul.GuiSoulBinder;
@@ -51,7 +54,7 @@ public class SoulBinderRecipeHandler extends TemplateRecipeHandler {
public void loadTransferRects() {
transferRects.add(
new TemplateRecipeHandler.RecipeTransferRect(
new Rectangle(70, 23, 22, 17),
new Rectangle(149, 32, 16, 16),
"EnderIOSoulBinder",
new Object[0]));
}
@@ -139,6 +142,10 @@ public class SoulBinderRecipeHandler extends TemplateRecipeHandler {
String s = I18n.format("container.repair.cost", new Object[] { Integer.valueOf(cost) });
GuiDraw.drawStringC(s, 83, 55, 0x80FF20);
}
int x = 149, y = 32;
EnderWidget.map.render(EnderWidget.BUTTON, x, y, 16, 16, 0, true);
IconEIO.map.render(IconEIO.RECIPE, x + 1, y + 1, 14, 14, 0, true);
}
private static final ArrayList<PositionedStack> EMPTY_VIAL_OUTPUT = new ArrayList<PositionedStack>();
@@ -3,32 +3,28 @@ package crazypants.enderio.nei;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.render.EnderWidget;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.util.FluidUtil;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.ItemStackMap;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.GuiCraftingRecipe;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.GuiUsageRecipe;
import codechicken.nei.recipe.TemplateRecipeHandler;
import crazypants.enderio.fluid.Fluids;
import crazypants.enderio.gui.GuiContainerBaseEIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.recipe.IRecipe;
import crazypants.enderio.machine.recipe.RecipeInput;
import crazypants.enderio.machine.vat.GuiVat;
@@ -70,7 +66,7 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
public void loadTransferRects() {
transferRects.add(
new TemplateRecipeHandler.RecipeTransferRect(
new Rectangle(70, 8, 28, 43),
new Rectangle(149, 32, 16, 16),
"EnderIOVat",
new Object[0]));
}
@@ -161,8 +157,8 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
if (rec.inFluid != null && rec.inFluid.getFluid() != null) {
RenderUtil.renderGuiTank(
rec.inFluid,
FluidContainerRegistry.BUCKET_VOLUME * 8,
rec.getInputFluidAmount(),
rec.inFluid.amount,
rec.inFluid.amount,
inTankBounds.x,
inTankBounds.y,
0,
@@ -173,8 +169,8 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
if (rec.result != null && rec.result.getFluid() != null) {
RenderUtil.renderGuiTank(
rec.result,
FluidContainerRegistry.BUCKET_VOLUME * 8,
rec.getResultFluidAmount(),
rec.result.amount,
rec.result.amount,
outTankBounds.x,
outTankBounds.y,
0,
@@ -194,6 +190,9 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
GuiDraw.drawStringC(str, ps.relx + 8, ps.rely + 19, 0x808080, false);
}
int x = 149, y = 32;
EnderWidget.map.render(EnderWidget.BUTTON, x, y, 16, 16, 0, true);
IconEIO.map.render(IconEIO.RECIPE, x + 1, y + 1, 14, 14, 0, true);
}
@Override
@@ -203,19 +202,24 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
@Override
public List<String> handleTooltip(GuiRecipe<?> gui, List<String> currenttip, int recipeIndex) {
final InnerVatRecipe rec = (InnerVatRecipe) arecipes.get(recipeIndex);
final Point pos = GuiDraw.getMousePosition();
final Point offset = gui.getRecipePosition(recipeIndex);
final Point relMouse = new Point(pos.x - gui.guiLeft - offset.x, pos.y - gui.guiTop - offset.y);
InnerVatRecipe rec = (InnerVatRecipe) arecipes.get(recipeIndex);
Point pos = GuiDraw.getMousePosition();
Point offset = gui.getRecipePosition(recipeIndex);
Point relMouse = new Point(
pos.x - ((gui.width - 176) / 2) - offset.x,
pos.y - ((gui.height - 166) / 2) - offset.y);
if (inTankBounds.contains(relMouse) && rec.inFluid != null && rec.inFluid.getFluid() != null) {
currenttip.add(rec.inFluid.getFluid().getLocalizedName(rec.inFluid));
currenttip.add(EnumChatFormatting.GRAY.toString() + rec.getInputFluidAmount() + " " + Fluids.MB());
} else if (outTankBounds.contains(relMouse) && rec.result != null && rec.result.getFluid() != null) {
currenttip.add(rec.result.getFluid().getLocalizedName(rec.result));
currenttip.add(EnumChatFormatting.GRAY.toString() + rec.getResultFluidAmount() + " " + Fluids.MB());
if (inTankBounds.contains(relMouse) || outTankBounds.contains(relMouse)) {
if (inTankBounds.contains(relMouse)) {
if (rec.inFluid != null && rec.inFluid.getFluid() != null) {
currenttip.add(rec.inFluid.getFluid().getLocalizedName(rec.inFluid));
}
} else {
if (rec.result != null && rec.result.getFluid() != null) {
currenttip.add(rec.result.getFluid().getLocalizedName(rec.result));
}
}
}
return super.handleTooltip(gui, currenttip, recipeIndex);
}
@@ -237,7 +241,9 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
InnerVatRecipe rec = (InnerVatRecipe) arecipes.get(recipeIndex);
Point pos = GuiDraw.getMousePosition();
Point offset = gui.getRecipePosition(recipeIndex);
Point relMouse = new Point(pos.x - gui.guiLeft - offset.x, pos.y - gui.guiTop - offset.y);
Point relMouse = new Point(
pos.x - ((gui.width - 176) / 2) - offset.x,
pos.y - ((gui.height - 166) / 2) - offset.y);
if (inTankBounds.contains(relMouse)) {
transferFluidTank(rec.inFluid, usage);
@@ -277,10 +283,7 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
public class InnerVatRecipe extends TemplateRecipeHandler.CachedRecipe {
private List<PositionedStack> inputs = new ArrayList<>();
private ItemStackMap<Float> firstItemMultiplier = new ItemStackMap();
private ItemStackMap<Float> secondItemMultiplier = new ItemStackMap();
private Map<FluidStack, Float> fluidMultiplier = new HashMap<>();
private ArrayList<PositionedStack> inputs;
private int energy;
private FluidStack result;
private FluidStack inFluid;
@@ -291,31 +294,7 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
@Override
public List<PositionedStack> getIngredients() {
return getCycledIngredients(cycleticks / 30, this.inputs);
}
public int getInputFluidAmount() {
return (int) Math
.round(FluidContainerRegistry.BUCKET_VOLUME * getFirstItemMultiplier() * getSecondItemMultiplier());
}
public int getResultFluidAmount() {
return (int) Math.round(
FluidContainerRegistry.BUCKET_VOLUME * getFirstItemMultiplier()
* getSecondItemMultiplier()
* getFluidMultiplier());
}
public float getFirstItemMultiplier() {
return this.inputs.isEmpty() ? 1f : this.firstItemMultiplier.getOrDefault(this.inputs.get(0).item, 1f);
}
public float getSecondItemMultiplier() {
return this.inputs.size() < 2 ? 1f : this.secondItemMultiplier.getOrDefault(this.inputs.get(1).item, 1f);
}
public float getFluidMultiplier() {
return this.fluidMultiplier.getOrDefault(this.inFluid, 1f);
return getCycledIngredients(cycleticks / 30, inputs);
}
@Override
@@ -324,41 +303,28 @@ public class VatRecipeHandler extends TemplateRecipeHandler {
}
public InnerVatRecipe(int energy, RecipeInput[] ingredients, FluidStack result) {
final List<ItemStack> inputsOne = new ArrayList<>();
final List<ItemStack> inputsTwo = new ArrayList<>();
ArrayList<ItemStack> inputsOne = new ArrayList<ItemStack>();
ArrayList<ItemStack> inputsTwo = new ArrayList<ItemStack>();
for (RecipeInput input : ingredients) {
float multi = input.getMulitplier();
if (input.getInput() != null) {
final List<ItemStack> equivs = getInputs(input);
List<ItemStack> equivs = getInputs(input);
if (input.getSlotNumber() == 0) {
inputsOne.addAll(equivs);
for (ItemStack stack : equivs) {
this.firstItemMultiplier.put(stack, multi);
}
} else if (input.getSlotNumber() == 1) {
inputsTwo.addAll(equivs);
for (ItemStack stack : equivs) {
this.secondItemMultiplier.put(stack, multi);
}
}
} else if (input.getFluidInput() != null) {
this.inFluid = input.getFluidInput();
this.fluidMultiplier.put(this.inFluid, multi);
inFluid = input.getFluidInput();
}
}
inputs = new ArrayList<PositionedStack>();
if (!inputsOne.isEmpty()) {
this.inputs.add(new PositionedStack(inputsOne, 51, 1));
inputs.add(new PositionedStack(inputsOne, 51, 1));
}
if (!inputsTwo.isEmpty()) {
this.inputs.add(new PositionedStack(inputsTwo, 100, 1));
inputs.add(new PositionedStack(inputsTwo, 100, 1));
}
this.energy = energy;
+25 -40
View File
@@ -1,6 +1,5 @@
package crazypants.util;
import static crazypants.enderio.EnderIO.hasGT5;
import static crazypants.enderio.material.Material.BINDER_COMPOSITE;
import static crazypants.enderio.material.Material.CONDUIT_BINDER;
import static crazypants.enderio.material.Material.PHASED_IRON_NUGGET;
@@ -10,7 +9,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
@@ -22,7 +20,6 @@ import com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy;
import com.pahimar.ee3.api.exchange.RecipeRegistryProxy;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.GameRegistry;
import crazypants.enderio.EnderIO;
import crazypants.enderio.config.Config;
import crazypants.enderio.item.ItemEnderFood.EnderFood;
@@ -96,59 +93,47 @@ public class EE3Util {
*/
public static void registerMiscRecipes() {
if (IS_EE3_LOADED) {
if (!hasGT5) {
ItemStack basicGear = new ItemStack(EnderIO.itemMachinePart, 1, MachinePart.BASIC_GEAR.ordinal());
ItemStack stick4 = new ItemStack(Items.stick, 4);
ItemStack cobble4 = new ItemStack(Blocks.cobblestone, 4);
registerRecipe(basicGear, stick4, cobble4);
ItemStack flour10 = new ItemStack(EnderIO.itemPowderIngot, 10, PowderIngot.FLOUR.ordinal());
ItemStack wheat5 = new ItemStack(Items.wheat, 5);
ItemStack seeds1 = new ItemStack(Items.wheat_seeds, 1);
registerRecipe(flour10, wheat5, seeds1);
}
ItemStack basicGear = new ItemStack(EnderIO.itemMachinePart, 1, MachinePart.BASIC_GEAR.ordinal());
ItemStack stick4 = new ItemStack(Items.stick, 4);
ItemStack cobble4 = new ItemStack(Blocks.cobblestone, 4);
registerRecipe(basicGear, stick4, cobble4);
ItemStack flour10 = new ItemStack(EnderIO.itemPowderIngot, 10, PowderIngot.FLOUR.ordinal());
ItemStack wheat5 = new ItemStack(Items.wheat, 5);
ItemStack seeds1 = new ItemStack(Items.wheat_seeds, 1);
registerRecipe(flour10, wheat5, seeds1);
ItemStack enderios = EnderFood.ENDERIOS.getStack();
ItemStack bowl = new ItemStack(Items.bowl, 1);
ItemStack wheat = new ItemStack(Items.wheat, 1);
ItemStack milkb = new ItemStack(Items.milk_bucket, 1);
FluidStack milk = FluidContainerRegistry.getFluidForFilledItem(milkb);
ItemStack dustEnderPearl;
if (hasGT5) {
dustEnderPearl = GameRegistry.findItemStack("gregtech", "gt.metaitem.01", 1);
Items.feather.setDamage(Objects.requireNonNull(dustEnderPearl), 2532);
} else {
dustEnderPearl = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_ENDER.ordinal());
}
ItemStack dustEnderPearl = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_ENDER.ordinal());
if (milk != null) {
registerRecipe(enderios, bowl, milk, wheat, dustEnderPearl);
} else {
registerRecipe(enderios, bowl, milkb, wheat, dustEnderPearl);
}
if (!hasGT5) {
ItemStack dustCoal = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_COAL.ordinal());
ItemStack coal = new ItemStack(Items.coal, 1);
registerRecipe(dustCoal, coal);
ItemStack dustCoal = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_COAL.ordinal());
ItemStack coal = new ItemStack(Items.coal, 1);
registerRecipe(dustCoal, coal);
ItemStack dustIron = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_IRON.ordinal());
ItemStack iron = new ItemStack(Items.iron_ingot, 1);
registerRecipe(dustIron, iron);
ItemStack dustIron = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_IRON.ordinal());
ItemStack iron = new ItemStack(Items.iron_ingot, 1);
registerRecipe(dustIron, iron);
ItemStack dustGold = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_GOLD.ordinal());
ItemStack gold = new ItemStack(Items.gold_ingot, 1);
registerRecipe(dustGold, gold);
ItemStack dustGold = new ItemStack(EnderIO.itemPowderIngot, 1, PowderIngot.POWDER_GOLD.ordinal());
ItemStack gold = new ItemStack(Items.gold_ingot, 1);
registerRecipe(dustGold, gold);
ItemStack dustObsidian4 = new ItemStack(
EnderIO.itemPowderIngot,
4,
PowderIngot.POWDER_OBSIDIAN.ordinal());
ItemStack obsidian = new ItemStack(Blocks.obsidian, 1);
registerRecipe(dustObsidian4, obsidian);
ItemStack dustObsidian4 = new ItemStack(EnderIO.itemPowderIngot, 4, PowderIngot.POWDER_OBSIDIAN.ordinal());
ItemStack obsidian = new ItemStack(Blocks.obsidian, 1);
registerRecipe(dustObsidian4, obsidian);
ItemStack enderDust9 = new ItemStack(EnderIO.itemPowderIngot, 9, PowderIngot.POWDER_ENDER.ordinal());
ItemStack enderPearl = new ItemStack(Items.ender_pearl);
registerRecipe(enderDust9, enderPearl);
}
ItemStack enderDust9 = new ItemStack(EnderIO.itemPowderIngot, 9, PowderIngot.POWDER_ENDER.ordinal());
ItemStack enderPearl = new ItemStack(Items.ender_pearl);
registerRecipe(enderDust9, enderPearl);
ItemStack cbc8 = BINDER_COMPOSITE.getStack(8);
ItemStack sand2 = new ItemStack(Blocks.sand, 2);
@@ -1,5 +0,0 @@
# Access Transformer configuration file
public net.minecraft.client.gui.inventory.GuiContainer field_146999_f #xSize
public net.minecraft.client.gui.inventory.GuiContainer field_147000_g #ySize
public net.minecraft.client.gui.inventory.GuiContainer field_147003_i #guiLeft
public net.minecraft.client.gui.inventory.GuiContainer field_147009_r #guiTop
@@ -777,7 +777,6 @@ enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s%s
#Painter
tile.blockPainter.name=Painting Machine
enderio.blockPainter.paintedWith=Painted with:
enderio.blockPainter.paintedWith.none=§onothing§r
tile.blockPaintedFence.name=Painted Fence
tile.blockPaintedFenceGate.name=Painted Gate
tile.blockPaintedWall.name=Painted Wall
File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB