So much porting...

This commit is contained in:
Flanks255 2021-11-13 17:20:29 -06:00
parent a6b359e1a7
commit d3780c5011
36 changed files with 453 additions and 1536 deletions

View file

@ -37,11 +37,6 @@ public interface IPhantomTile {
*/ */
void setBoundPosition(BlockPos pos); void setBoundPosition(BlockPos pos);
/**
* @return The ID of the GUI it opens, -1 if none
*/
int getGuiID();
/** /**
* @return The range the tile currently has * @return The range the tile currently has
*/ */

View file

@ -132,35 +132,35 @@ public class EmpoweringRecipeGenerator extends RecipeProvider {
public EmpoweringBuilder addModifier(IItemProvider input) { public EmpoweringBuilder addModifier(IItemProvider input) {
if (modifiers.size() >= 4) if (modifiers.size() >= 4)
throw new InvalidStateException("too many modifiers for empowering recipe, input: " + input.asItem().getRegistryName()); throw new IllegalStateException("too many modifiers for empowering recipe, input: " + input.asItem().getRegistryName());
modifiers.add(Ingredient.of(input)); modifiers.add(Ingredient.of(input));
return this; return this;
} }
public EmpoweringBuilder addModifier(ItemStack input) { public EmpoweringBuilder addModifier(ItemStack input) {
if (modifiers.size() >= 4) if (modifiers.size() >= 4)
throw new InvalidStateException("too many modifiers for empowering recipe, input: " + input.getItem().getRegistryName()); throw new IllegalStateException("too many modifiers for empowering recipe, input: " + input.getItem().getRegistryName());
modifiers.add(Ingredient.of(input)); modifiers.add(Ingredient.of(input));
return this; return this;
} }
public EmpoweringBuilder addModifier(ITag<Item> input) { public EmpoweringBuilder addModifier(ITag<Item> input) {
if (modifiers.size() >= 4) if (modifiers.size() >= 4)
throw new InvalidStateException("too many modifiers for empowering recipe, input: " + input.toString()); throw new IllegalStateException("too many modifiers for empowering recipe, input: " + input.toString());
modifiers.add(Ingredient.of(input)); modifiers.add(Ingredient.of(input));
return this; return this;
} }
public void save(Consumer<IFinishedRecipe> consumer, ResourceLocation name) { public void save(Consumer<IFinishedRecipe> consumer, ResourceLocation name) {
if (modifiers.size() != 4) if (modifiers.size() != 4)
throw new InvalidStateException("invalid modifier count: " + modifiers.size() + ", recipe: " + name.toString()); throw new IllegalStateException("invalid modifier count: " + modifiers.size() + ", recipe: " + name.toString());
consumer.accept(new EmpowererRecipe.FinishedRecipe(name, result, base, modifiers.get(0), modifiers.get(1), modifiers.get(2), modifiers.get(3), energy, time, color)); consumer.accept(new EmpowererRecipe.FinishedRecipe(name, result, base, modifiers.get(0), modifiers.get(1), modifiers.get(2), modifiers.get(3), energy, time, color));
} }
public void save(Consumer<IFinishedRecipe> consumer, String name) { public void save(Consumer<IFinishedRecipe> consumer, String name) {
ResourceLocation res = new ResourceLocation(ActuallyAdditions.MODID, "empowering/" + name); ResourceLocation res = new ResourceLocation(ActuallyAdditions.MODID, "empowering/" + name);
if (modifiers.size() != 4) if (modifiers.size() != 4)
throw new InvalidStateException("invalid modifier count: " + modifiers.size() + ", recipe: " + res); throw new IllegalStateException("invalid modifier count: " + modifiers.size() + ", recipe: " + res);
consumer.accept(new EmpowererRecipe.FinishedRecipe(res, result, base, modifiers.get(0), modifiers.get(1), modifiers.get(2), modifiers.get(3), energy, time, color)); consumer.accept(new EmpowererRecipe.FinishedRecipe(res, result, base, modifiers.get(0), modifiers.get(1), modifiers.get(2), modifiers.get(3), energy, time, color));
} }
} }

View file

@ -6,7 +6,6 @@ import de.ellpeck.actuallyadditions.mod.crafting.ActuallyRecipes;
import de.ellpeck.actuallyadditions.mod.crafting.TargetNBTIngredient; import de.ellpeck.actuallyadditions.mod.crafting.TargetNBTIngredient;
import de.ellpeck.actuallyadditions.mod.crafting.WrappedRecipe; import de.ellpeck.actuallyadditions.mod.crafting.WrappedRecipe;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems; import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheFoods;
import net.minecraft.data.*; import net.minecraft.data.*;
import net.minecraft.enchantment.Enchantments; import net.minecraft.enchantment.Enchantments;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -171,12 +170,12 @@ public class ItemRecipeGenerator extends RecipeProvider {
.define('S', ActuallyItems.ENORI_CRYSTAL.get()).save(consumer); .define('S', ActuallyItems.ENORI_CRYSTAL.get()).save(consumer);
//Rice Recipes /* //Rice Recipes
Recipe.shaped(Items.PAPER, 3) Recipe.shaped(Items.PAPER, 3)
.pattern("R ") .pattern("R ")
.pattern(" R ") .pattern(" R ")
.pattern(" R") .pattern(" R")
.define('R', TheFoods.RICE).save(consumer); //TODO foods need worked on still. .define('R', TheFoods.RICE).save(consumer); //TODO foods need worked on still.*/
Recipe.shaped(ActuallyItems.RICE_SLIME.get()) Recipe.shaped(ActuallyItems.RICE_SLIME.get())
.pattern(" R ") .pattern(" R ")

View file

@ -1,93 +0,0 @@
/*
* This file ("BlockInputter.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.blocks;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInputter;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInputterAdvanced;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
public class BlockInputter extends BlockContainerBase {
public static final int NAME_FLAVOR_AMOUNTS = 15;
public final boolean isAdvanced;
public BlockInputter(boolean isAdvanced) {
super(ActuallyBlocks.defaultPickProps(0).randomTicks());
this.isAdvanced = isAdvanced;
}
@Override
public TileEntity newBlockEntity(IBlockReader worldIn) {
return this.isAdvanced
? new TileEntityInputterAdvanced()
: new TileEntityInputter();
}
@Override
public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) {
if (this.isAdvanced) {
return this.openGui(world, player, pos, TileEntityInputterAdvanced.class);
}
return this.openGui(world, player, pos, TileEntityInputter.class);
}
// TODO: [port] ADD BACK
// public static class TheItemBlock extends ItemBlockBase {
//
// private final Random rand = new Random();
// private long lastSysTime;
// private int toPick;
//
// public TheItemBlock(Block block) {
// super(block);
// this.setHasSubtypes(false);
// this.setMaxDamage(0);
// }
//
// @Override
// public String getTranslationKey(ItemStack stack) {
// return this.getTranslationKey();
// }
//
// @Override
// public int getMetadata(int damage) {
// return damage;
// }
//
// @Override
// public String getItemStackDisplayName(ItemStack stack) {
// if (Util.isClient()) {
// long sysTime = System.currentTimeMillis();
//
// if (this.lastSysTime + 5000 < sysTime) {
// this.lastSysTime = sysTime;
// this.toPick = this.rand.nextInt(NAME_FLAVOR_AMOUNTS) + 1;
// }
//
// return StringUtil.localize(this.getTranslationKey() + ".name") + " (" + StringUtil.localize("tile." + ActuallyAdditions.MODID + ".block_inputter.add." + this.toPick + ".name") + ")";
// } else {
// return super.getItemStackDisplayName(stack);
// }
// }
// }
}

View file

@ -15,7 +15,6 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntListValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntListValues;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
import de.ellpeck.actuallyadditions.mod.misc.apiimpl.farmer.*; import de.ellpeck.actuallyadditions.mod.misc.apiimpl.farmer.*;
import net.minecraft.util.ResourceLocation;
// TODO: [port] MOVE TO DATA_GENERATOR // TODO: [port] MOVE TO DATA_GENERATOR
@Deprecated @Deprecated
@ -48,7 +47,7 @@ public final class InitCrafting {
// ActuallyAdditionsAPI.addFarmerBehavior(new EnderlillyFarmerBehavior()); // ActuallyAdditionsAPI.addFarmerBehavior(new EnderlillyFarmerBehavior());
// ActuallyAdditionsAPI.addFarmerBehavior(new RedOrchidFarmerBehavior()); // ActuallyAdditionsAPI.addFarmerBehavior(new RedOrchidFarmerBehavior());
new RecipePotionRingCharging(new ResourceLocation(ActuallyAdditions.MODID, "potion_ring_charging")); //new RecipePotionRingCharging(new ResourceLocation(ActuallyAdditions.MODID, "potion_ring_charging"));
new RecipeBioMash(new ResourceLocation(ActuallyAdditions.MODID, "bio_mash")); //new RecipeBioMash(new ResourceLocation(ActuallyAdditions.MODID, "bio_mash"));
} }
} }

View file

@ -215,7 +215,7 @@ public class ClientEvents {
GlStateManager._pushMatrix(); GlStateManager._pushMatrix();
GlStateManager._color4f(1F, 1F, 1F, 1F); GlStateManager._color4f(1F, 1F, 1F, 1F);
energyDisplay.draw(); energyDisplay.draw(event.getMatrixStack());
GlStateManager._popMatrix(); GlStateManager._popMatrix();
} }
} }

View file

@ -26,7 +26,6 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.ClickType; import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.IContainerListener;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.container.Slot;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -122,6 +121,7 @@ public class ContainerBag extends Container implements IButtonReactor {
super.broadcastChanges(); super.broadcastChanges();
if (this.filter.needsUpdateSend() || this.autoInsert != this.oldAutoInsert) { if (this.filter.needsUpdateSend() || this.autoInsert != this.oldAutoInsert) {
/*
for (IContainerListener listener : this.containerListeners) { for (IContainerListener listener : this.containerListeners) {
listener.setContainerData(this, 0, this.filter.isWhitelist listener.setContainerData(this, 0, this.filter.isWhitelist
? 1 ? 1
@ -140,6 +140,7 @@ public class ContainerBag extends Container implements IButtonReactor {
? 1 ? 1
: 0); : 0);
} }
*/
this.filter.updateLasts(); this.filter.updateLasts();
this.oldAutoInsert = this.autoInsert; this.oldAutoInsert = this.autoInsert;
} }

View file

@ -12,9 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCrusher; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCrusher;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
@ -64,6 +62,7 @@ public class ContainerGrinder extends Container {
@Override @Override
public ItemStack quickMoveStack(PlayerEntity player, int slot) { public ItemStack quickMoveStack(PlayerEntity player, int slot) {
/*
int inventoryStart = this.isDouble int inventoryStart = this.isDouble
? 6 ? 6
: 3; : 3;
@ -124,7 +123,9 @@ public class ContainerGrinder extends Container {
return currentStack; return currentStack;
} }
return StackUtil.getEmpty();
*/
return ItemStack.EMPTY;
} }
@Override @Override

View file

@ -1,132 +0,0 @@
/*
* This file ("ContainerInputter.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiInputter;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInputter;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import java.util.Objects;
public class ContainerInputter extends Container {
public final TileEntityInputter tileInputter;
public final boolean isAdvanced;
public static ContainerInputter fromNetwork(int windowId, PlayerInventory inv, PacketBuffer data) {
return new ContainerInputter(windowId, inv, (TileEntityInputter) Objects.requireNonNull(inv.player.level.getBlockEntity(data.readBlockPos())));
}
public ContainerInputter(int windowId, PlayerInventory inventory, TileEntityInputter tile) {
super(ActuallyContainers.INPUTTER_CONTAINER.get(), windowId);
this.tileInputter = tile;
this.isAdvanced = tile.isAdvanced;
this.addSlot(new SlotItemHandlerUnconditioned(this.tileInputter.inv, 0, 80, 21 + (this.isAdvanced
? 12
: 0)));
if (this.isAdvanced) {
for (int i = 0; i < 2; i++) {
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 4; y++) {
this.addSlot(new SlotFilter(i == 0
? this.tileInputter.leftFilter
: this.tileInputter.rightFilter, y + x * 4, 20 + i * 84 + x * 18, 6 + y * 18));
}
}
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 9; j++) {
this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 101 + i * 18 + (this.isAdvanced
? GuiInputter.OFFSET_ADVANCED
: 0)));
}
}
for (int i = 0; i < 9; i++) {
this.addSlot(new Slot(inventory, i, 8 + i * 18, 159 + (this.isAdvanced
? GuiInputter.OFFSET_ADVANCED
: 0)));
}
}
@Override
public ItemStack quickMoveStack(PlayerEntity player, int slot) {
int inventoryStart = this.isAdvanced
? 25
: 1;
int inventoryEnd = inventoryStart + 26;
int hotbarStart = inventoryEnd + 1;
int hotbarEnd = hotbarStart + 8;
Slot theSlot = this.slots.get(slot);
if (theSlot != null && theSlot.hasItem()) {
ItemStack newStack = theSlot.getItem();
ItemStack currentStack = newStack.copy();
//Other Slots in Inventory excluded
if (slot >= inventoryStart) {
//Shift from Inventory
if (!this.moveItemStackTo(newStack, 0, 1, false)) {
//
if (slot >= inventoryStart && slot <= inventoryEnd) {
if (!this.moveItemStackTo(newStack, hotbarStart, hotbarEnd + 1, false)) {
return StackUtil.getEmpty();
}
} else if (slot >= inventoryEnd + 1 && slot < hotbarEnd + 1 && !this.moveItemStackTo(newStack, inventoryStart, inventoryEnd + 1, false)) {
return StackUtil.getEmpty();
}
}
} else if (!this.moveItemStackTo(newStack, inventoryStart, hotbarEnd + 1, false)) {
return StackUtil.getEmpty();
}
if (!StackUtil.isValid(newStack)) {
theSlot.set(StackUtil.getEmpty());
} else {
theSlot.setChanged();
}
if (newStack.getCount() == currentStack.getCount()) {
return StackUtil.getEmpty();
}
theSlot.onTake(player, newStack);
return currentStack;
}
return StackUtil.getEmpty();
}
@Override
public ItemStack clicked(int slotId, int dragType, ClickType clickTypeIn, PlayerEntity player) {
if (SlotFilter.checkFilter(this, slotId, player)) {
return StackUtil.getEmpty();
} else {
return super.clicked(slotId, dragType, clickTypeIn, player);
}
}
@Override
public boolean stillValid(PlayerEntity player) {
return this.tileInputter.canPlayerUse(player);
}
}

View file

@ -0,0 +1,85 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class Buttons {
@OnlyIn(Dist.CLIENT)
public static class SmallerButton extends Button {
public final ResourceLocation resLoc = AssetUtil.getGuiLocation("gui_inputter");
private final boolean smaller;
public SmallerButton(int x, int y, ITextComponent display, IPressable pressable) {
this(x, y, display, false, pressable);
}
public SmallerButton(int x, int y, ITextComponent display, boolean smaller, IPressable pressable) {
super(x, y, 16, smaller
? 12
: 16, display, pressable);
this.smaller = smaller;
}
@Override
public void render(MatrixStack matrices, int x, int y, float f) {
if (this.visible) {
Minecraft.getInstance().getTextureManager().bind(this.resLoc);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.isHovered = x >= this.x && y >= this.y && x < this.x + this.width && y < this.y + this.height;
int k = this.getHoverState(this.hovered);
GlStateManager._enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager._blendFunc(770, 771);
this.blit(matrices, this.x, this.y, this.smaller
? 200
: 176, k * this.height, this.width, this.height);
this.mouseDragged(mc, x, y);
int color = 14737632;
if (this.packedFGColour != 0) {
color = this.packedFGColour;
} else if (!this.enabled) {
color = 10526880;
} else if (this.hovered) {
color = 16777120;
}
this.drawCenteredString(mc.fontRenderer, this.displayString, this.x + this.width / 2, this.y + (this.height - 8) / 2, color);
}
}
}
@OnlyIn(Dist.CLIENT)
public static class TinyButton extends Button {
public final ResourceLocation resLoc = AssetUtil.getGuiLocation("gui_inputter");
public TinyButton(int id, int x, int y) {
super(id, x, y, 8, 8, "");
}
@Override
public void drawButton(Minecraft mc, int x, int y, float f) {
if (this.visible) {
mc.getTextureManager().bind(this.resLoc);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.hovered = x >= this.x && y >= this.y && x < this.x + this.width && y < this.y + this.height;
int k = this.getHoverState(this.hovered);
GlStateManager._enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager._blendFunc(770, 771);
this.blit(matrices, this.x, this.y, 192, k * 8, 8, 8);
this.mouseDragged(mc, x, y);
}
}
}
}

View file

@ -14,13 +14,11 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.tile.CustomEnergyStorage; import de.ellpeck.actuallyadditions.mod.tile.CustomEnergyStorage;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.client.gui.GuiUtils;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.ArrayList; import java.util.ArrayList;
@ -69,14 +67,14 @@ public class EnergyDisplay extends AbstractGui {
if (this.rfReference.getEnergyStored() > 0) { if (this.rfReference.getEnergyStored() > 0) {
int i = this.rfReference.getEnergyStored() * 83 / this.rfReference.getMaxEnergyStored(); int i = this.rfReference.getEnergyStored() * 83 / this.rfReference.getMaxEnergyStored();
float[] color = AssetUtil.getWheelColor(mc.level.getTotalWorldTime() % 256); float[] color = AssetUtil.getWheelColor(mc.level.getGameTime() % 256);
RenderSystem.color4f(color[0] / 255F, color[1] / 255F, color[2] / 255F); RenderSystem.color3f(color[0] / 255F, color[1] / 255F, color[2] / 255F);
this.blit(matrices, barX + 1, barY + 84 - i, 36, 172, 16, i); this.blit(matrices, barX + 1, barY + 84 - i, 36, 172, 16, i);
RenderSystem.color4f(1F, 1F, 1F); RenderSystem.color3f(1F, 1F, 1F);
} }
if (this.drawTextNextTo) { if (this.drawTextNextTo) {
this.drawString(mc.font, this.getOverlayText(), barX + 25, barY + 78, StringUtil.DECIMAL_COLOR_WHITE); //this.drawString(mc.font, this.getOverlayText(), barX + 25, barY + 78, StringUtil.DECIMAL_COLOR_WHITE);
} }
} }
@ -86,7 +84,7 @@ public class EnergyDisplay extends AbstractGui {
List<String> text = new ArrayList<>(); List<String> text = new ArrayList<>();
text.add(this.getOverlayText()); text.add(this.getOverlayText());
GuiUtils.drawHoveringText(matrices, text, mouseX, mouseY, mc.getWindow().getWidth(), mc.getWindow().getHeight(), -1, mc.font); //GuiUtils.drawHoveringText(matrices, text, mouseX, mouseY, mc.getWindow().getWidth(), mc.getWindow().getHeight(), -1, mc.font);
} }
} }

View file

@ -11,7 +11,6 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui; package de.ellpeck.actuallyadditions.mod.inventory.gui;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiInputter.SmallerButton;
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings; import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -21,10 +20,8 @@ import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.client.gui.GuiUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@ -32,28 +29,28 @@ public class FilterSettingsGui extends AbstractGui {
private final FilterSettings theSettings; private final FilterSettings theSettings;
public SmallerButton whitelistButton; public Buttons.SmallerButton whitelistButton;
public SmallerButton metaButton; public Buttons.SmallerButton metaButton;
public SmallerButton nbtButton; public Buttons.SmallerButton nbtButton;
public SmallerButton modButton; public Buttons.SmallerButton modButton;
public SmallerButton oredictButton; public Buttons.SmallerButton oredictButton;
public FilterSettingsGui(FilterSettings settings, int x, int y, List<Button> buttonList) { public FilterSettingsGui(FilterSettings settings, int x, int y, List<Button> buttonList) {
this.theSettings = settings; this.theSettings = settings;
this.whitelistButton = new SmallerButton(this.theSettings.whitelistButtonId, x, y, "", true); this.whitelistButton = new Buttons.SmallerButton(this.theSettings.whitelistButtonId, x, y, true);
buttonList.add(this.whitelistButton); buttonList.add(this.whitelistButton);
y += 14; y += 14;
this.metaButton = new SmallerButton(this.theSettings.metaButtonId, x, y, "", true); this.metaButton = new Buttons.SmallerButton(this.theSettings.metaButtonId, x, y, true);
buttonList.add(this.metaButton); buttonList.add(this.metaButton);
y += 14; y += 14;
this.nbtButton = new SmallerButton(this.theSettings.nbtButtonId, x, y, "", true); this.nbtButton = new Buttons.SmallerButton(this.theSettings.nbtButtonId, x, y, true);
buttonList.add(this.nbtButton); buttonList.add(this.nbtButton);
y += 14; y += 14;
this.oredictButton = new SmallerButton(this.theSettings.oredictButtonId, x, y, "", true); this.oredictButton = new Buttons.SmallerButton(this.theSettings.oredictButtonId, x, y, true);
buttonList.add(this.oredictButton); buttonList.add(this.oredictButton);
y += 15; y += 15;
this.modButton = new SmallerButton(this.theSettings.modButtonId, x, y, "", true); this.modButton = new Buttons.SmallerButton(this.theSettings.modButtonId, x, y, true);
buttonList.add(this.modButton); buttonList.add(this.modButton);
this.tick(); this.tick();
@ -87,25 +84,25 @@ public class FilterSettingsGui extends AbstractGui {
list.add(TextFormatting.BOLD + (this.theSettings.isWhitelist list.add(TextFormatting.BOLD + (this.theSettings.isWhitelist
? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.whitelist") ? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.whitelist")
: StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.blacklist"))); : StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.blacklist")));
list.addAll(mc.font.listFormattedStringToWidth(StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".gui.whitelistInfo"), 200)); //list.addAll(mc.font.substrByWidth(StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".gui.whitelistInfo"), 200));
GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font); //GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font);
} else if (this.metaButton.isMouseOver(mouseX, mouseY)) { } else if (this.metaButton.isMouseOver(mouseX, mouseY)) {
GuiUtils.drawHoveringText(Collections.singletonList(TextFormatting.BOLD + (this.theSettings.respectMeta //GuiUtils.drawHoveringText(Collections.singletonList(TextFormatting.BOLD + (this.theSettings.respectMeta
? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectMeta") // ? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectMeta")
: StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.ignoreMeta"))), mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font); // : StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.ignoreMeta"))), mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font);
} else if (this.nbtButton.isMouseOver(mouseX, mouseY)) { } else if (this.nbtButton.isMouseOver(mouseX, mouseY)) {
GuiUtils.drawHoveringText(Collections.singletonList(TextFormatting.BOLD + (this.theSettings.respectNBT //GuiUtils.drawHoveringText(Collections.singletonList(TextFormatting.BOLD + (this.theSettings.respectNBT
? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectNBT") // ? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectNBT")
: StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.ignoreNBT"))), mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font); // : StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.ignoreNBT"))), mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font);
} else if (this.modButton.isMouseOver(mouseX, mouseY)) { } else if (this.modButton.isMouseOver(mouseX, mouseY)) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add(TextFormatting.BOLD + (this.theSettings.respectMod list.add(TextFormatting.BOLD + (this.theSettings.respectMod
? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectMod") ? StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectMod")
: StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.ignoreMod"))); : StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.ignoreMod")));
list.addAll(mc.font.listFormattedStringToWidth(StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectModInfo"), 200)); //list.addAll(mc.font.listFormattedStringToWidth(StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectModInfo"), 200));
GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font); //GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font);
} else if (this.oredictButton.isMouseOver()) { } else if (this.oredictButton.isMouseOver()) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add(TextFormatting.BOLD + (this.theSettings.respectOredict == 0 list.add(TextFormatting.BOLD + (this.theSettings.respectOredict == 0
@ -122,9 +119,9 @@ public class FilterSettingsGui extends AbstractGui {
} }
if (type != null) { if (type != null) {
list.addAll(mc.font.listFormattedStringToWidth(StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectOredictInfo." + type), 200)); //list.addAll(mc.font.listFormattedStringToWidth(StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.respectOredictInfo." + type), 200));
} }
GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font); //GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font);
} }
} }
} }

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui; package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerBag; import de.ellpeck.actuallyadditions.mod.inventory.ContainerBag;
import de.ellpeck.actuallyadditions.mod.network.PacketClientToServer; import de.ellpeck.actuallyadditions.mod.network.PacketClientToServer;
@ -50,7 +51,7 @@ public class GuiBag extends GuiWtfMojang<ContainerBag> {
public void init() { public void init() {
super.init(); super.init();
this.filter = new FilterSettingsGui(this.container.filter, this.leftPos + 138, this.topPos + 10, this.buttonList); this.filter = new FilterSettingsGui(this.container.filter, this.leftPos + 138, this.topPos + 10, this.buttons);
this.buttonAutoInsert = new Button(0, this.leftPos - 21, this.topPos + 8, 20, 20, (this.container.autoInsert this.buttonAutoInsert = new Button(0, this.leftPos - 21, this.topPos + 8, 20, 20, (this.container.autoInsert
? TextFormatting.DARK_GREEN ? TextFormatting.DARK_GREEN
@ -61,20 +62,20 @@ public class GuiBag extends GuiWtfMojang<ContainerBag> {
@Override @Override
protected void actionPerformed(Button button) throws IOException { protected void actionPerformed(Button button) throws IOException {
CompoundNBT data = new CompoundNBT(); CompoundNBT data = new CompoundNBT();
data.setInteger("ButtonID", button.id); data.putInt("ButtonID", button.id);
data.setInteger("PlayerID", Minecraft.getInstance().player.getId()); data.putInt("PlayerID", Minecraft.getInstance().player.getId());
data.setInteger("WorldID", Minecraft.getInstance().level.provider.getDimension()); data.putInt("WorldID", Minecraft.getInstance().level.provider.getDimension());
PacketHandler.THE_NETWORK.sendToServer(new PacketClientToServer(data, PacketHandler.GUI_BUTTON_TO_CONTAINER_HANDLER)); PacketHandler.THE_NETWORK.sendToServer(new PacketClientToServer(data, PacketHandler.GUI_BUTTON_TO_CONTAINER_HANDLER));
} }
@Override @Override
public void updateScreen() { public void tick() {
super.updateScreen(); super.tick();
this.filter.tick(); this.filter.tick();
this.buttonAutoInsert.displayString = (this.container.autoInsert //this.buttonAutoInsert.displayString = (this.container.autoInsert
? TextFormatting.DARK_GREEN // ? TextFormatting.DARK_GREEN
: TextFormatting.RED) + "I"; // : TextFormatting.RED) + "I";
} }
@Override @Override

View file

@ -1,348 +0,0 @@
/*
* This file ("GuiInputter.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerInputter;
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInputter;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraft.client.gui.widget.button.Button.IPressable;
@OnlyIn(Dist.CLIENT)
public class GuiInputter extends GuiWtfMojang<ContainerInputter> {
public static final int OFFSET_ADVANCED = 12 + 36;
public static final String[] SIDES = new String[]{StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.disabled"), StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.up"), StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.down"), StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.north"), StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.east"), StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.south"), StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.west")};
private static final ResourceLocation RES_LOC = AssetUtil.getGuiLocation("gui_inputter");
private static final ResourceLocation RES_LOC_ADVANCED = AssetUtil.getGuiLocation("gui_inputter_advanced");
public final TileEntityInputter tileInputter;
private final boolean isAdvanced;
private TextFieldWidget fieldPutStart;
private TextFieldWidget fieldPutEnd;
private TextFieldWidget fieldPullStart;
private TextFieldWidget fieldPullEnd;
private FilterSettingsGui leftFilter;
private FilterSettingsGui rightFilter;
public GuiInputter(ContainerInputter container, PlayerInventory inventory, ITextComponent title) {
super(container, inventory);
this.tileInputter = container.tileInputter;
this.imageWidth = 176;
this.imageHeight = 97 + 86 + (container.isAdvanced
? OFFSET_ADVANCED
: 0);
this.isAdvanced = container.isAdvanced;
}
@Override
public void init() {
super.init();
if (this.isAdvanced) {
this.leftFilter = new FilterSettingsGui(this.tileInputter.leftFilter, this.leftPos + 3, this.topPos + 6, this.buttonList);
this.rightFilter = new FilterSettingsGui(this.tileInputter.rightFilter, this.leftPos + 157, this.topPos + 6, this.buttonList);
}
this.fieldPullStart = new TextFieldWidget(this.font, this.leftPos + 6, this.topPos + 80 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), 34, 8);
this.fieldPullStart.setMaxLength(5);
this.fieldPullStart.setBordered(false);
this.children.add(this.fieldPullStart);
this.fieldPullEnd = new TextFieldWidget(this.font, this.leftPos + 50, this.topPos + 80 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), 34, 8);
this.fieldPullEnd.setMaxLength(5);
this.fieldPullEnd.setBordered(false);
this.children.add(this.fieldPullEnd);
this.fieldPutStart = new TextFieldWidget(this.font, this.leftPos + 91, this.topPos + 80 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), 34, 8);
this.fieldPutStart.setMaxLength(5);
this.fieldPutStart.setBordered(false);
this.children.add(this.fieldPutStart);
this.fieldPutEnd = new TextFieldWidget(this.font, this.leftPos + 135, this.topPos + 80 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), 34, 8);
this.fieldPutEnd.setMaxLength(5);
this.fieldPutEnd.setBordered(false);
this.children.add(this.fieldPutEnd);
SmallerButton buttonSidePutP = new SmallerButton(0, this.leftPos + 155, this.topPos + 43 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), ">");
SmallerButton buttonSidePutM = new SmallerButton(1, this.leftPos + 90, this.topPos + 43 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), "<");
SmallerButton buttonSidePullP = new SmallerButton(2, this.leftPos + 70, this.topPos + 43 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), ">");
SmallerButton buttonSidePullM = new SmallerButton(3, this.leftPos + 5, this.topPos + 43 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), "<");
this.addButton(buttonSidePutP);
this.addButton(buttonSidePullP);
this.addButton(buttonSidePutM);
this.addButton(buttonSidePullM);
this.addButton(new TinyButton(TileEntityInputter.OKAY_BUTTON_ID, this.leftPos + 84, this.topPos + 91 + (this.isAdvanced
? OFFSET_ADVANCED
: 0)));
}
@Override
public void render(MatrixStack matrices, int x, int y, float f) {
super.render(matrices, x, y, f);
int newTopOffset = this.topPos + (this.isAdvanced
? OFFSET_ADVANCED
: 0);
//Info Mode on!
if (x >= this.leftPos + 4 && y >= newTopOffset + 65 && x <= this.leftPos + 4 + 38 && y <= newTopOffset + 65 + 12) {
this.drawHoveringText(this.font.listFormattedStringToWidth(StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".inputter.info.1").replace("<p>", StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.pull")), 200), x, y);
}
if (x >= this.leftPos + 89 && y >= newTopOffset + 65 && x <= this.leftPos + 89 + 38 && y <= newTopOffset + 65 + 12) {
this.drawHoveringText(this.font.listFormattedStringToWidth(StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".inputter.info.1").replace("<p>", StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.put")), 200), x, y);
}
if (x >= this.leftPos + 48 && y >= newTopOffset + 65 && x <= this.leftPos + 48 + 38 && y <= newTopOffset + 65 + 12) {
this.drawHoveringText(this.font.listFormattedStringToWidth(StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".inputter.info.2").replace("<p>", StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.pull")), 200), x, y);
}
if (x >= this.leftPos + 133 && y >= newTopOffset + 65 && x <= this.leftPos + 133 + 38 && y <= newTopOffset + 65 + 12) {
this.drawHoveringText(this.font.listFormattedStringToWidth(StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".inputter.info.2").replace("<p>", StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.put")), 200), x, y);
}
if (this.isAdvanced) {
this.leftFilter.drawHover(x, y);
this.rightFilter.drawHover(x, y);
}
}
@Override
public void renderLabels(MatrixStack matrices, int x, int y) {
AssetUtil.displayNameString(matrices, this.font, this.imageWidth, -10, this.tileInputter);
}
@Override
public void renderBg(MatrixStack matrices, float f, int x, int y) {
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.getMinecraft().getTextureManager().bind(AssetUtil.GUI_INVENTORY_LOCATION);
this.blit(matrices, this.leftPos, this.topPos + 97 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), 0, 0, 176, 86);
this.getMinecraft().getTextureManager().bind(this.isAdvanced
? RES_LOC_ADVANCED
: RES_LOC);
this.blit(matrices, this.leftPos, this.topPos, 0, 0, 176, 97 + (this.isAdvanced
? OFFSET_ADVANCED
: 0));
this.font.draw(matrices, StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.inbound"), this.leftPos + 23 + 3, this.topPos + 32 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_GRAY_TEXT);
this.font.draw(matrices, StringUtil.localize("info." + ActuallyAdditions.MODID + ".gui.outbound"), this.leftPos + 104 + 3, this.topPos + 32 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_GRAY_TEXT);
this.font.draw(matrices, SIDES[this.tileInputter.sideToPull + 1], this.leftPos + 24 + 1, this.topPos + 45 + 3 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_GRAY_TEXT);
this.font.draw(matrices, SIDES[this.tileInputter.sideToPut + 1], this.leftPos + 109 + 1, this.topPos + 45 + 3 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_GRAY_TEXT);
this.font.draw(matrices, Integer.toString(this.tileInputter.slotToPutStart), this.leftPos + 92, this.topPos + 67 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_WHITE);
this.font.draw(matrices, Integer.toString(this.tileInputter.slotToPutEnd), this.leftPos + 136, this.topPos + 67 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_WHITE);
this.font.draw(matrices, Integer.toString(this.tileInputter.slotToPullStart), this.leftPos + 7, this.topPos + 67 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_WHITE);
this.font.draw(matrices, Integer.toString(this.tileInputter.slotToPullEnd), this.leftPos + 51, this.topPos + 67 + (this.isAdvanced
? OFFSET_ADVANCED
: 0), StringUtil.DECIMAL_COLOR_WHITE);
}
// @Override
// protected void mouseClicked(int par1, int par2, int par3) throws IOException {
// this.fieldPutStart.mouseClicked(par1, par2, par3);
// this.fieldPutEnd.mouseClicked(par1, par2, par3);
// this.fieldPullStart.mouseClicked(par1, par2, par3);
// this.fieldPullEnd.mouseClicked(par1, par2, par3);
//
// super.mouseClicked(par1, par2, par3);
// }
// @Override
// public void keyTyped(char theChar, int key) throws IOException {
// if (key == Keyboard.KEY_RETURN || key == Keyboard.KEY_NUMPADENTER) {
// if (this.fieldPutStart.isFocused()) {
// this.setVariable(this.fieldPutStart, 0);
// }
// if (this.fieldPutEnd.isFocused()) {
// this.setVariable(this.fieldPutEnd, 1);
// }
// if (this.fieldPullStart.isFocused()) {
// this.setVariable(this.fieldPullStart, 2);
// }
// if (this.fieldPullEnd.isFocused()) {
// this.setVariable(this.fieldPullEnd, 3);
// }
// } else if (Character.isDigit(theChar) || key == Keyboard.KEY_BACK || key == Keyboard.KEY_DELETE || key == Keyboard.KEY_LEFT || key == Keyboard.KEY_RIGHT) {
// this.fieldPutStart.textboxKeyTyped(theChar, key);
// this.fieldPutEnd.textboxKeyTyped(theChar, key);
// this.fieldPullStart.textboxKeyTyped(theChar, key);
// this.fieldPullEnd.textboxKeyTyped(theChar, key);
// } else {
// super.keyTyped(theChar, key);
// }
// }
@Override
public void tick() {
super.tick();
//
// this.fieldPutStart.updateCursorCounter();
// this.fieldPutEnd.updateCursorCounter();
// this.fieldPullStart.updateCursorCounter();
// this.fieldPullEnd.updateCursorCounter();
if (this.isAdvanced) {
this.leftFilter.tick();
this.rightFilter.tick();
}
}
public void setVariable(TextFieldWidget field, int sendInt) {
if (!field.getValue().isEmpty()) {
this.sendPacket(this.parse(field.getValue()), sendInt);
field.setValue("");
}
}
private void sendPacket(int text, int textID) {
PacketHandlerHelper.sendNumberPacket(this.tileInputter, text, textID);
}
private int parse(String theInt) {
try {
return Integer.parseInt(theInt);
} catch (Exception e) {
return -1;
}
}
@Override
public void actionPerformed(Button button) {
if (button.id == TileEntityInputter.OKAY_BUTTON_ID) {
this.setVariable(this.fieldPutStart, 0);
this.setVariable(this.fieldPutEnd, 1);
this.setVariable(this.fieldPullStart, 2);
this.setVariable(this.fieldPullEnd, 3);
} else {
PacketHandlerHelper.sendButtonPacket(this.tileInputter, button.id);
}
}
@OnlyIn(Dist.CLIENT)
public static class SmallerButton extends Button {
public final ResourceLocation resLoc = AssetUtil.getGuiLocation("gui_inputter");
private final boolean smaller;
public SmallerButton(int x, int y, ITextComponent display, IPressable pressable) {
this(x, y, display, false, pressable);
}
public SmallerButton(int x, int y, ITextComponent display, boolean smaller, IPressable pressable) {
super(x, y, 16, smaller
? 12
: 16, display, pressable);
this.smaller = smaller;
}
@Override
public void render(MatrixStack matrices, int x, int y, float f) {
if (this.visible) {
Minecraft.getInstance().getTextureManager().bind(this.resLoc);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.isHovered = x >= this.x && y >= this.y && x < this.x + this.width && y < this.y + this.height;
int k = this.getHoverState(this.hovered);
GlStateManager._enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager._blendFunc(770, 771);
this.blit(matrices, this.x, this.y, this.smaller
? 200
: 176, k * this.height, this.width, this.height);
this.mouseDragged(mc, x, y);
int color = 14737632;
if (this.packedFGColour != 0) {
color = this.packedFGColour;
} else if (!this.enabled) {
color = 10526880;
} else if (this.hovered) {
color = 16777120;
}
this.drawCenteredString(mc.fontRenderer, this.displayString, this.x + this.width / 2, this.y + (this.height - 8) / 2, color);
}
}
}
@OnlyIn(Dist.CLIENT)
public static class TinyButton extends Button {
public final ResourceLocation resLoc = AssetUtil.getGuiLocation("gui_inputter");
public TinyButton(int id, int x, int y) {
super(id, x, y, 8, 8, "");
}
@Override
public void drawButton(Minecraft mc, int x, int y, float f) {
if (this.visible) {
mc.getTextureManager().bind(this.resLoc);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.hovered = x >= this.x && y >= this.y && x < this.x + this.width && y < this.y + this.height;
int k = this.getHoverState(this.hovered);
GlStateManager._enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager._blendFunc(770, 771);
this.blit(matrices, this.x, this.y, 192, k * 8, 8, 8);
this.mouseDragged(mc, x, y);
}
}
}
}

View file

@ -14,7 +14,6 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerLaserRelayItemWhitelist; import de.ellpeck.actuallyadditions.mod.inventory.ContainerLaserRelayItemWhitelist;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiInputter.SmallerButton;
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper; import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelayItemAdvanced; import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelayItemAdvanced;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
@ -64,8 +63,8 @@ public class GuiLaserRelayItemWhitelist extends GuiWtfMojang<ContainerLaserRelay
this.leftFilter = new FilterSettingsGui(this.tile.leftFilter, this.leftPos + 3, this.topPos + 6, this.buttonList); this.leftFilter = new FilterSettingsGui(this.tile.leftFilter, this.leftPos + 3, this.topPos + 6, this.buttonList);
this.rightFilter = new FilterSettingsGui(this.tile.rightFilter, this.leftPos + 157, this.topPos + 6, this.buttonList); this.rightFilter = new FilterSettingsGui(this.tile.rightFilter, this.leftPos + 157, this.topPos + 6, this.buttonList);
this.buttonSmartWhitelistLeft = new SmallerButton(2, this.leftPos + 3, this.topPos + 79, "S"); this.buttonSmartWhitelistLeft = new Buttons.SmallerButton(2, this.leftPos + 3, this.topPos + 79, "S");
this.buttonSmartWhitelistRight = new SmallerButton(3, this.leftPos + 157, this.topPos + 79, "S"); this.buttonSmartWhitelistRight = new Buttons.SmallerButton(3, this.leftPos + 157, this.topPos + 79, "S");
this.addButton(this.buttonSmartWhitelistLeft); this.addButton(this.buttonSmartWhitelistLeft);
this.addButton(this.buttonSmartWhitelistRight); this.addButton(this.buttonSmartWhitelistRight);
} }

View file

@ -176,13 +176,13 @@ public final class ActuallyItems {
public static final RegistryObject<Item> SHOVEL_QUARTZ = ITEMS.register("shovel_quartz", () -> new ItemShovelAA(ToolMaterials.BLACK_QUARTZ)); public static final RegistryObject<Item> SHOVEL_QUARTZ = ITEMS.register("shovel_quartz", () -> new ItemShovelAA(ToolMaterials.BLACK_QUARTZ));
public static final RegistryObject<Item> SWORD_QUARTZ = ITEMS.register("sword_quartz", () -> new ItemSwordAA(ToolMaterials.BLACK_QUARTZ)); public static final RegistryObject<Item> SWORD_QUARTZ = ITEMS.register("sword_quartz", () -> new ItemSwordAA(ToolMaterials.BLACK_QUARTZ));
public static final RegistryObject<Item> HOE_QUARTZ = ITEMS.register("hoe_quartz", () -> new ItemHoeAA(ToolMaterials.BLACK_QUARTZ)); public static final RegistryObject<Item> HOE_QUARTZ = ITEMS.register("hoe_quartz", () -> new ItemHoeAA(ToolMaterials.BLACK_QUARTZ));
public static final RegistryObject<Item> WOODEN_PAXEL = ITEMS.register("wooden_paxel", () -> new ItemAllToolAA(ItemTier.WOOD)); public static final RegistryObject<Item> WOODEN_PAXEL = ITEMS.register("wooden_paxel", () -> new AllInOneTool(ItemTier.WOOD));
public static final RegistryObject<Item> STONE_PAXEL = ITEMS.register("stone_paxel", () -> new ItemAllToolAA(ItemTier.STONE)); public static final RegistryObject<Item> STONE_PAXEL = ITEMS.register("stone_paxel", () -> new AllInOneTool(ItemTier.STONE));
public static final RegistryObject<Item> IRON_PAXEL = ITEMS.register("iron_paxel", () -> new ItemAllToolAA(ItemTier.IRON)); public static final RegistryObject<Item> IRON_PAXEL = ITEMS.register("iron_paxel", () -> new AllInOneTool(ItemTier.IRON));
public static final RegistryObject<Item> GOLD_PAXEL = ITEMS.register("gold_paxel", () -> new ItemAllToolAA(ItemTier.GOLD)); public static final RegistryObject<Item> GOLD_PAXEL = ITEMS.register("gold_paxel", () -> new AllInOneTool(ItemTier.GOLD));
public static final RegistryObject<Item> DIAMOND_PAXEL = ITEMS.register("diamond_paxel", () -> new ItemAllToolAA(ItemTier.DIAMOND)); public static final RegistryObject<Item> DIAMOND_PAXEL = ITEMS.register("diamond_paxel", () -> new AllInOneTool(ItemTier.DIAMOND));
public static final RegistryObject<Item> NETHERITE_PAXEL = ITEMS.register("netherite_paxel", () -> new ItemAllToolAA(ItemTier.NETHERITE)); public static final RegistryObject<Item> NETHERITE_PAXEL = ITEMS.register("netherite_paxel", () -> new AllInOneTool(ItemTier.NETHERITE));
public static final RegistryObject<Item> QUARTZ_PAXEL = ITEMS.register("quartz_paxel", () -> new ItemAllToolAA(ToolMaterials.BLACK_QUARTZ)); public static final RegistryObject<Item> QUARTZ_PAXEL = ITEMS.register("quartz_paxel", () -> new AllInOneTool(ToolMaterials.BLACK_QUARTZ));
public static final RegistryObject<Item> PICKAXE_CRYSTAL_RESTONIA = ITEMS.register("pickaxe_crystal_restonia", () -> new ItemPickaxeAA(ToolMaterials.RESTONIA)); public static final RegistryObject<Item> PICKAXE_CRYSTAL_RESTONIA = ITEMS.register("pickaxe_crystal_restonia", () -> new ItemPickaxeAA(ToolMaterials.RESTONIA));
public static final RegistryObject<Item> AXE_CRYSTAL_RESTONIA = ITEMS.register("axe_crystal_restonia", () -> new ItemAxeAA(ToolMaterials.RESTONIA)); public static final RegistryObject<Item> AXE_CRYSTAL_RESTONIA = ITEMS.register("axe_crystal_restonia", () -> new ItemAxeAA(ToolMaterials.RESTONIA));
@ -193,7 +193,7 @@ public final class ActuallyItems {
public static final RegistryObject<Item> CHEST_CRYSTAL_RESTONIA = ITEMS.register("chest_crystal_restonia", () -> new ItemArmorAA(ArmorMaterials.RESTONIA, EquipmentSlotType.CHEST)); public static final RegistryObject<Item> CHEST_CRYSTAL_RESTONIA = ITEMS.register("chest_crystal_restonia", () -> new ItemArmorAA(ArmorMaterials.RESTONIA, EquipmentSlotType.CHEST));
public static final RegistryObject<Item> PANTS_CRYSTAL_RESTONIA = ITEMS.register("pants_crystal_restonia", () -> new ItemArmorAA(ArmorMaterials.RESTONIA, EquipmentSlotType.LEGS)); public static final RegistryObject<Item> PANTS_CRYSTAL_RESTONIA = ITEMS.register("pants_crystal_restonia", () -> new ItemArmorAA(ArmorMaterials.RESTONIA, EquipmentSlotType.LEGS));
public static final RegistryObject<Item> BOOTS_CRYSTAL_RESTONIA = ITEMS.register("boots_crystal_restonia", () -> new ItemArmorAA(ArmorMaterials.RESTONIA, EquipmentSlotType.FEET)); public static final RegistryObject<Item> BOOTS_CRYSTAL_RESTONIA = ITEMS.register("boots_crystal_restonia", () -> new ItemArmorAA(ArmorMaterials.RESTONIA, EquipmentSlotType.FEET));
public static final RegistryObject<Item> PAXEL_CRYSTAL_RESTONIA = ITEMS.register("paxel_crystal_restonia", () -> new ItemAllToolAA(ToolMaterials.RESTONIA)); public static final RegistryObject<Item> PAXEL_CRYSTAL_RESTONIA = ITEMS.register("paxel_crystal_restonia", () -> new AllInOneTool(ToolMaterials.RESTONIA));
public static final RegistryObject<Item> PICKAXE_CRYSTAL_PALIS = ITEMS.register("pickaxe_crystal_palis", () -> new ItemPickaxeAA(ToolMaterials.PALIS)); public static final RegistryObject<Item> PICKAXE_CRYSTAL_PALIS = ITEMS.register("pickaxe_crystal_palis", () -> new ItemPickaxeAA(ToolMaterials.PALIS));
public static final RegistryObject<Item> AXE_CRYSTAL_PALIS = ITEMS.register("axe_crystal_palis", () -> new ItemAxeAA(ToolMaterials.PALIS)); public static final RegistryObject<Item> AXE_CRYSTAL_PALIS = ITEMS.register("axe_crystal_palis", () -> new ItemAxeAA(ToolMaterials.PALIS));
@ -204,7 +204,7 @@ public final class ActuallyItems {
public static final RegistryObject<Item> CHEST_CRYSTAL_PALIS = ITEMS.register("chest_crystal_palis", () -> new ItemArmorAA(ArmorMaterials.PALIS, EquipmentSlotType.CHEST)); public static final RegistryObject<Item> CHEST_CRYSTAL_PALIS = ITEMS.register("chest_crystal_palis", () -> new ItemArmorAA(ArmorMaterials.PALIS, EquipmentSlotType.CHEST));
public static final RegistryObject<Item> PANTS_CRYSTAL_PALIS = ITEMS.register("pants_crystal_palis", () -> new ItemArmorAA(ArmorMaterials.PALIS, EquipmentSlotType.LEGS)); public static final RegistryObject<Item> PANTS_CRYSTAL_PALIS = ITEMS.register("pants_crystal_palis", () -> new ItemArmorAA(ArmorMaterials.PALIS, EquipmentSlotType.LEGS));
public static final RegistryObject<Item> BOOTS_CRYSTAL_PALIS = ITEMS.register("boots_crystal_palis", () -> new ItemArmorAA(ArmorMaterials.PALIS, EquipmentSlotType.FEET)); public static final RegistryObject<Item> BOOTS_CRYSTAL_PALIS = ITEMS.register("boots_crystal_palis", () -> new ItemArmorAA(ArmorMaterials.PALIS, EquipmentSlotType.FEET));
public static final RegistryObject<Item> PAXEL_CRYSTAL_PALIS = ITEMS.register("paxel_crystal_palis", () -> new ItemAllToolAA(ToolMaterials.PALIS)); public static final RegistryObject<Item> PAXEL_CRYSTAL_PALIS = ITEMS.register("paxel_crystal_palis", () -> new AllInOneTool(ToolMaterials.PALIS));
public static final RegistryObject<Item> PICKAXE_CRYSTAL_DIAMATINE = ITEMS.register("pickaxe_crystal_diamatine", () -> new ItemPickaxeAA(ToolMaterials.DIAMATINE)); public static final RegistryObject<Item> PICKAXE_CRYSTAL_DIAMATINE = ITEMS.register("pickaxe_crystal_diamatine", () -> new ItemPickaxeAA(ToolMaterials.DIAMATINE));
public static final RegistryObject<Item> AXE_CRYSTAL_DIAMATINE = ITEMS.register("axe_crystal_diamatine", () -> new ItemAxeAA(ToolMaterials.DIAMATINE)); public static final RegistryObject<Item> AXE_CRYSTAL_DIAMATINE = ITEMS.register("axe_crystal_diamatine", () -> new ItemAxeAA(ToolMaterials.DIAMATINE));
@ -215,7 +215,7 @@ public final class ActuallyItems {
public static final RegistryObject<Item> CHEST_CRYSTAL_DIAMATINE = ITEMS.register("chest_crystal_diamatine", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.CHEST)); public static final RegistryObject<Item> CHEST_CRYSTAL_DIAMATINE = ITEMS.register("chest_crystal_diamatine", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.CHEST));
public static final RegistryObject<Item> PANTS_CRYSTAL_DIAMATINE = ITEMS.register("pants_crystal_diamatine", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.LEGS)); public static final RegistryObject<Item> PANTS_CRYSTAL_DIAMATINE = ITEMS.register("pants_crystal_diamatine", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.LEGS));
public static final RegistryObject<Item> BOOTS_CRYSTAL_DIAMATINE = ITEMS.register("boots_crystal_diamatine", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.FEET)); public static final RegistryObject<Item> BOOTS_CRYSTAL_DIAMATINE = ITEMS.register("boots_crystal_diamatine", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.FEET));
public static final RegistryObject<Item> PAXEL_CRYSTAL_DIAMATINE = ITEMS.register("paxel_crystal_diamatine", () -> new ItemAllToolAA(ToolMaterials.DIAMATINE)); public static final RegistryObject<Item> PAXEL_CRYSTAL_DIAMATINE = ITEMS.register("paxel_crystal_diamatine", () -> new AllInOneTool(ToolMaterials.DIAMATINE));
public static final RegistryObject<Item> PICKAXE_CRYSTAL_VOID = ITEMS.register("pickaxe_crystal_void", () -> new ItemPickaxeAA(ToolMaterials.VOID)); public static final RegistryObject<Item> PICKAXE_CRYSTAL_VOID = ITEMS.register("pickaxe_crystal_void", () -> new ItemPickaxeAA(ToolMaterials.VOID));
public static final RegistryObject<Item> AXE_CRYSTAL_VOID = ITEMS.register("axe_crystal_void", () -> new ItemAxeAA(ToolMaterials.VOID)); public static final RegistryObject<Item> AXE_CRYSTAL_VOID = ITEMS.register("axe_crystal_void", () -> new ItemAxeAA(ToolMaterials.VOID));
@ -226,7 +226,7 @@ public final class ActuallyItems {
public static final RegistryObject<Item> CHEST_CRYSTAL_VOID = ITEMS.register("chest_crystal_void", () -> new ItemArmorAA(ArmorMaterials.VOID, EquipmentSlotType.CHEST)); public static final RegistryObject<Item> CHEST_CRYSTAL_VOID = ITEMS.register("chest_crystal_void", () -> new ItemArmorAA(ArmorMaterials.VOID, EquipmentSlotType.CHEST));
public static final RegistryObject<Item> PANTS_CRYSTAL_VOID = ITEMS.register("pants_crystal_void", () -> new ItemArmorAA(ArmorMaterials.VOID, EquipmentSlotType.LEGS)); public static final RegistryObject<Item> PANTS_CRYSTAL_VOID = ITEMS.register("pants_crystal_void", () -> new ItemArmorAA(ArmorMaterials.VOID, EquipmentSlotType.LEGS));
public static final RegistryObject<Item> BOOTS_CRYSTAL_VOID = ITEMS.register("boots_crystal_void", () -> new ItemArmorAA(ArmorMaterials.VOID, EquipmentSlotType.FEET)); public static final RegistryObject<Item> BOOTS_CRYSTAL_VOID = ITEMS.register("boots_crystal_void", () -> new ItemArmorAA(ArmorMaterials.VOID, EquipmentSlotType.FEET));
public static final RegistryObject<Item> PAXEL_CRYSTAL_VOID = ITEMS.register("paxel_crystal_void", () -> new ItemAllToolAA(ToolMaterials.VOID)); public static final RegistryObject<Item> PAXEL_CRYSTAL_VOID = ITEMS.register("paxel_crystal_void", () -> new AllInOneTool(ToolMaterials.VOID));
public static final RegistryObject<Item> PICKAXE_CRYSTAL_EMERADIC = ITEMS.register("pickaxe_crystal_emeradic", () -> new ItemPickaxeAA(ToolMaterials.EMERADIC)); public static final RegistryObject<Item> PICKAXE_CRYSTAL_EMERADIC = ITEMS.register("pickaxe_crystal_emeradic", () -> new ItemPickaxeAA(ToolMaterials.EMERADIC));
public static final RegistryObject<Item> AXE_CRYSTAL_EMERADIC = ITEMS.register("axe_crystal_emeradic", () -> new ItemAxeAA(ToolMaterials.EMERADIC)); public static final RegistryObject<Item> AXE_CRYSTAL_EMERADIC = ITEMS.register("axe_crystal_emeradic", () -> new ItemAxeAA(ToolMaterials.EMERADIC));
@ -237,7 +237,7 @@ public final class ActuallyItems {
public static final RegistryObject<Item> CHEST_CRYSTAL_EMERADIC = ITEMS.register("chest_crystal_emeradic", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.CHEST)); public static final RegistryObject<Item> CHEST_CRYSTAL_EMERADIC = ITEMS.register("chest_crystal_emeradic", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.CHEST));
public static final RegistryObject<Item> PANTS_CRYSTAL_EMERADIC = ITEMS.register("pants_crystal_emeradic", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.LEGS)); public static final RegistryObject<Item> PANTS_CRYSTAL_EMERADIC = ITEMS.register("pants_crystal_emeradic", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.LEGS));
public static final RegistryObject<Item> BOOTS_CRYSTAL_EMERADIC = ITEMS.register("boots_crystal_emeradic", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.FEET)); public static final RegistryObject<Item> BOOTS_CRYSTAL_EMERADIC = ITEMS.register("boots_crystal_emeradic", () -> new ItemArmorAA(ArmorMaterials.DIAMATINE, EquipmentSlotType.FEET));
public static final RegistryObject<Item> PAXEL_CRYSTAL_EMERADIC = ITEMS.register("paxel_crystal_emeradic", () -> new ItemAllToolAA(ToolMaterials.EMERADIC)); public static final RegistryObject<Item> PAXEL_CRYSTAL_EMERADIC = ITEMS.register("paxel_crystal_emeradic", () -> new AllInOneTool(ToolMaterials.EMERADIC));
public static final RegistryObject<Item> PICKAXE_CRYSTAL_ENORI = ITEMS.register("pickaxe_crystal_enori", () -> new ItemPickaxeAA(ToolMaterials.ENORI)); public static final RegistryObject<Item> PICKAXE_CRYSTAL_ENORI = ITEMS.register("pickaxe_crystal_enori", () -> new ItemPickaxeAA(ToolMaterials.ENORI));
public static final RegistryObject<Item> AXE_CRYSTAL_ENORI = ITEMS.register("axe_crystal_enori", () -> new ItemAxeAA(ToolMaterials.ENORI)); public static final RegistryObject<Item> AXE_CRYSTAL_ENORI = ITEMS.register("axe_crystal_enori", () -> new ItemAxeAA(ToolMaterials.ENORI));
@ -248,7 +248,7 @@ public final class ActuallyItems {
public static final RegistryObject<Item> CHEST_CRYSTAL_ENORI = ITEMS.register("chest_crystal_enori", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.CHEST)); public static final RegistryObject<Item> CHEST_CRYSTAL_ENORI = ITEMS.register("chest_crystal_enori", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.CHEST));
public static final RegistryObject<Item> PANTS_CRYSTAL_ENORI = ITEMS.register("pants_crystal_enori", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.LEGS)); public static final RegistryObject<Item> PANTS_CRYSTAL_ENORI = ITEMS.register("pants_crystal_enori", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.LEGS));
public static final RegistryObject<Item> BOOTS_CRYSTAL_ENORI = ITEMS.register("boots_crystal_enori", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.FEET)); public static final RegistryObject<Item> BOOTS_CRYSTAL_ENORI = ITEMS.register("boots_crystal_enori", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.FEET));
public static final RegistryObject<Item> PAXEL_CRYSTAL_ENORI = ITEMS.register("paxel_crystal_enori", () -> new ItemAllToolAA(ToolMaterials.ENORI)); public static final RegistryObject<Item> PAXEL_CRYSTAL_ENORI = ITEMS.register("paxel_crystal_enori", () -> new AllInOneTool(ToolMaterials.ENORI));
public static Item.Properties defaultProps() { public static Item.Properties defaultProps() {
return new Item.Properties().tab(ActuallyAdditions.GROUP); return new Item.Properties().tab(ActuallyAdditions.GROUP);

View file

@ -0,0 +1,51 @@
package de.ellpeck.actuallyadditions.mod.items;
import com.google.common.collect.ImmutableSet;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.IActuallyItem;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.*;
import net.minecraft.util.ActionResultType;
import net.minecraftforge.common.ToolType;
public class AllInOneTool extends ToolItem implements IActuallyItem {
private final IItemTier tier;
public AllInOneTool(IItemTier tier) {
super(
4.0f,
-2f,
tier,
ImmutableSet.of(),
new Properties()
.addToolType(ToolType.AXE, tier.getLevel())
.addToolType(ToolType.HOE, tier.getLevel())
.addToolType(ToolType.SHOVEL, tier.getLevel())
.addToolType(ToolType.PICKAXE, tier.getLevel())
.durability(tier.getUses() * 4)
.tab(ActuallyAdditions.GROUP)
);
this.tier = tier;
}
@Override
public ActionResultType useOn(ItemUseContext context) {
// How, no idea, possible, most likely :cry:
if (context.getPlayer() == null) {
return ActionResultType.FAIL;
}
// Player not sneaking? Act as a Hoe to the block, else, Act as a shovel
if (!context.getPlayer().isCrouching()) {
return Items.IRON_HOE.useOn(context);
}
return Items.IRON_SHOVEL.useOn(context);
}
@Override
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
return super.canApplyAtEnchantingTable(stack, enchantment) || enchantment.category.canEnchant(Items.DIAMOND_SWORD);
}
}

View file

@ -1,128 +0,0 @@
/*
* This file ("ItemAllToolAA.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.items;
import com.google.common.collect.Sets;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigStringListValues;
import de.ellpeck.actuallyadditions.mod.items.base.ItemToolAA;
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.IItemTier;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import java.util.HashSet;
import java.util.Set;
public class ItemAllToolAA extends ItemToolAA implements IColorProvidingItem {
public final int color;
public ItemAllToolAA(IItemTier toolMat) {
super(4.0F, -2F, toolMat, this.repairItem, unlocalizedName, this.rarity, new HashSet<>());
this.color = this.color;
this.setMaxDamage(toolMat.getUses() * 4);
this.setHarvestLevels(toolMat.getLevel());
}
private void setHarvestLevels(int amount) {
for (String s : this.getToolClasses(null)) {
this.setHarvestLevel(s, amount);
}
}
@Override
protected void registerRendering() {
ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this), new ResourceLocation(ActuallyAdditions.MODID, "item_paxel"), "inventory");
}
@Override
public ActionResultType onItemUse(PlayerEntity playerIn, World worldIn, BlockPos pos, Hand hand, Direction side, float hitX, float hitY, float hitZ) {
if (!playerIn.isShiftKeyDown()) {
return Items.IRON_HOE.onItemUse(playerIn, worldIn, pos, hand, side, hitX, hitY, hitZ);
}
return Items.IRON_SHOVEL.onItemUse(playerIn, worldIn, pos, hand, side, hitX, hitY, hitZ);
}
@Override
public boolean canHarvestBlock(BlockState state, ItemStack stack) {
return this.hasExtraWhitelist(state.getBlock()) || state.getMaterial().isToolNotRequired() || state.getBlock() == Blocks.SNOW_LAYER || state.getBlock() == Blocks.SNOW || (state.getBlock() == Blocks.OBSIDIAN
? this.toolMaterial.getHarvestLevel() >= 3
: state.getBlock() != Blocks.DIAMOND_BLOCK && state.getBlock() != Blocks.DIAMOND_ORE
? state.getBlock() != Blocks.EMERALD_ORE && state.getBlock() != Blocks.EMERALD_BLOCK
? state.getBlock() != Blocks.GOLD_BLOCK && state.getBlock() != Blocks.GOLD_ORE
? state.getBlock() != Blocks.IRON_BLOCK && state.getBlock() != Blocks.IRON_ORE
? state.getBlock() != Blocks.LAPIS_BLOCK && state.getBlock() != Blocks.LAPIS_ORE
? state.getBlock() != Blocks.REDSTONE_ORE && state.getBlock() != Blocks.LIT_REDSTONE_ORE
? state.getMaterial() == Material.STONE || state.getMaterial() == Material.METAL || state.getMaterial() == Material.HEAVY_METAL
: this.toolMaterial.getHarvestLevel() >= 2
: this.toolMaterial.getHarvestLevel() >= 1
: this.toolMaterial.getHarvestLevel() >= 1
: this.toolMaterial.getHarvestLevel() >= 2
: this.toolMaterial.getHarvestLevel() >= 2
: this.toolMaterial.getHarvestLevel() >= 2);
}
private boolean hasExtraWhitelist(Block block) {
String name = block.getRegistryName().toString();
for (String list : ConfigStringListValues.PAXEL_EXTRA_MINING_WHITELIST.getValue()) {
if (list.equals(name)) {
return true;
}
}
return false;
}
@Override
public Set<String> getToolClasses(ItemStack stack) {
return Sets.newHashSet("pickaxe", "axe", "shovel");
}
@Override
public float getDestroySpeed(ItemStack stack, BlockState state) {
if (state.getBlock() == Blocks.COBWEB) {
return 15.0F;
} else {
return this.hasExtraWhitelist(state.getBlock()) || state.getBlock().getHarvestTool(state) == null || state.getBlock().getHarvestTool(state).isEmpty() || this.getToolClasses(stack).contains(state.getBlock().getHarvestTool(state))
? this.speed
: 1.0F;
}
}
@OnlyIn(Dist.CLIENT)
@Override
public IItemColor getItemColor() {
return (stack, pass) -> pass > 0
? ItemAllToolAA.this.color
: 0xFFFFFF;
}
@Override
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
return super.canApplyAtEnchantingTable(stack, enchantment) || enchantment.category.canEnchant(Items.DIAMOND_SWORD);
}
}

View file

@ -18,105 +18,102 @@ import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.LivingEntity;
import net.minecraft.init.Items;
import net.minecraft.init.MobEffects;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient; import net.minecraft.item.crafting.Ingredient;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.potion.PotionEffect; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.StringUtils;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.ModList;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ItemCoffee extends ItemFoodBase { public class ItemCoffee extends ItemFoodBase {
public ItemCoffee() { public ItemCoffee() {
super(8, 5.0F, false, name); super(8, 5.0F, false); //, name);
this.setMaxDamage(3); //this.setMaxDamage(3);
this.setAlwaysEdible(); //this.setAlwaysEdible();
this.setMaxStackSize(1); //this.setMaxStackSize(1);
this.setNoRepair(); //this.setNoRepair();
} }
public static void initIngredients() { public static void initIngredients() {
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new MilkIngredient(Ingredient.fromItem(Items.MILK_BUCKET))); ActuallyAdditionsAPI.addCoffeeMachineIngredient(new MilkIngredient(Ingredient.of(Items.MILK_BUCKET)));
//Pam's Soy Milk (For Jemx because he's lactose intolerant. YER HAPPY NAO!?) //Pam's Soy Milk (For Jemx because he's lactose intolerant. YER HAPPY NAO!?)
if (Loader.isModLoaded("harvestcraft")) { if (ModList.get().isLoaded("harvestcraft")) {
Item item = ItemUtil.getItemFromName("harvestcraft:soymilkitem"); Item item = ItemUtil.getItemFromName("harvestcraft:soymilkitem");
if (item != null) { if (item != null) {
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new MilkIngredient(Ingredient.fromItem(item))); ActuallyAdditionsAPI.addCoffeeMachineIngredient(new MilkIngredient(Ingredient.of(item)));
} }
} }
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.SUGAR), 4, new PotionEffect(MobEffects.SPEED, 30, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.SUGAR), 4, new PotionEffect(MobEffects.SPEED, 30, 0)));
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.MAGMA_CREAM), 2, new PotionEffect(MobEffects.FIRE_RESISTANCE, 20, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.MAGMA_CREAM), 2, new PotionEffect(MobEffects.FIRE_RESISTANCE, 20, 0)));
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(new ItemStack(Items.FISH, 1, 3)), 2, new PotionEffect(MobEffects.WATER_BREATHING, 10, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(new ItemStack(Items.FISH, 1, 3)), 2, new PotionEffect(MobEffects.WATER_BREATHING, 10, 0)));
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.GOLDEN_CARROT), 2, new PotionEffect(MobEffects.NIGHT_VISION, 30, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.GOLDEN_CARROT), 2, new PotionEffect(MobEffects.NIGHT_VISION, 30, 0)));
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.GHAST_TEAR), 3, new PotionEffect(MobEffects.REGENERATION, 5, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.GHAST_TEAR), 3, new PotionEffect(MobEffects.REGENERATION, 5, 0)));
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.BLAZE_POWDER), 4, new PotionEffect(MobEffects.STRENGTH, 15, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.BLAZE_POWDER), 4, new PotionEffect(MobEffects.STRENGTH, 15, 0)));
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.FERMENTED_SPIDER_EYE), 2, new PotionEffect(MobEffects.INVISIBILITY, 25, 0))); //ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.of(Items.FERMENTED_SPIDER_EYE), 2, new PotionEffect(MobEffects.INVISIBILITY, 25, 0)));
} }
@Nullable @Nullable
public static CoffeeIngredient getIngredientFromStack(ItemStack stack) { public static CoffeeIngredient getIngredientFromStack(ItemStack stack) {
for (CoffeeIngredient ingredient : ActuallyAdditionsAPI.COFFEE_MACHINE_INGREDIENTS) { for (CoffeeIngredient ingredient : ActuallyAdditionsAPI.COFFEE_MACHINE_INGREDIENTS) {
if (ingredient.getInput().apply(stack)) { if (ingredient.getInput().test(stack)) {
return ingredient; return ingredient;
} }
} }
return null; return null;
} }
public static void applyPotionEffectsFromStack(ItemStack stack, EntityLivingBase player) { public static void applyPotionEffectsFromStack(ItemStack stack, LivingEntity player) {/*
PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack); PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack);
if (effects != null && effects.length > 0) { if (effects != null && effects.length > 0) {
for (PotionEffect effect : effects) { for (PotionEffect effect : effects) {
player.addPotionEffect(new PotionEffect(effect.getPotion(), effect.getDuration() * 20, effect.getAmplifier())); player.addPotionEffect(new PotionEffect(effect.getPotion(), effect.getDuration() * 20, effect.getAmplifier()));
} }
} }
*/
} }
@Override //@Override
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase player) { public ItemStack onItemUseFinish(ItemStack stack, World world, LivingEntity player) {
ItemStack theStack = stack.copy(); ItemStack theStack = stack.copy();
super.finishUsingItem(stack, world, player); super.finishUsingItem(stack, world, player);
applyPotionEffectsFromStack(stack, player); applyPotionEffectsFromStack(stack, player);
theStack.setItemDamage(theStack.getItemDamage() + 1); //theStack.setItemDamage(theStack.getItemDamage() + 1);
if (theStack.getMaxDamage() - theStack.getItemDamage() < 0) { //if (theStack.getMaxDamage() - theStack.getItemDamage() < 0) {
return new ItemStack(ActuallyItems.COFFEE_CUP.get()); // return new ItemStack(ActuallyItems.COFFEE_CUP.get());
} else { //} else {
return theStack; // return theStack;
} //}
return ItemStack.EMPTY;
} }
@Override //@Override
public EnumAction getItemUseAction(ItemStack stack) { //public EnumAction getItemUseAction(ItemStack stack) {
return EnumAction.DRINK; // return EnumAction.DRINK;
} //}
@Nullable @Nullable
@Override @Override
public CompoundNBT getShareTag(ItemStack stack) { public CompoundNBT getShareTag(ItemStack stack) {
return super.getShareTag(stack); return super.getShareTag(stack);
} }
@Override @Override
public void addInformation(ItemStack stack, @Nullable World playerIn, List<String> tooltip, ITooltipFlag advanced) { public void appendHoverText(ItemStack stack, @Nullable World playerIn, List<ITextComponent> tooltip, ITooltipFlag advanced) {
PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack); //PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack);
if (effects != null) { //if (effects != null) {
for (PotionEffect effect : effects) { // for (PotionEffect effect : effects) {
tooltip.add(StringUtil.localize(effect.getEffectName()) + " " + (effect.getAmplifier() + 1) + ", " + StringUtils.formatTickDuration(effect.getDuration() * 20)); // tooltip.add(StringUtil.localize(effect.getEffectName()) + " " + (effect.getAmplifier() + 1) + ", " + StringUtils.formatTickDuration(effect.getDuration() * 20));
} // }
} else { //} else {
tooltip.add(StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".coffeeCup.noEffect")); // tooltip.add(StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".coffeeCup.noEffect"));
} //}
} }
@Override @Override
@ -137,10 +134,10 @@ public class ItemCoffee extends ItemFoodBase {
@Override @Override
public boolean effect(ItemStack stack) { public boolean effect(ItemStack stack) {
PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack); //PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack);
ArrayList<PotionEffect> effectsNew = new ArrayList<>(); //ArrayList<PotionEffect> effectsNew = new ArrayList<>();
if (effects != null && effects.length > 0) { if (effects != null && effects.length > 0) {
for (PotionEffect effect : effects) { /* for (PotionEffect effect : effects) {
if (effect.getAmplifier() > 0) { if (effect.getAmplifier() > 0) {
effectsNew.add(new PotionEffect(effect.getPotion(), effect.getDuration() + 120, effect.getAmplifier() - 1)); effectsNew.add(new PotionEffect(effect.getPotion(), effect.getDuration() + 120, effect.getAmplifier() - 1));
} }
@ -149,7 +146,7 @@ public class ItemCoffee extends ItemFoodBase {
if (effectsNew.size() > 0) { if (effectsNew.size() > 0) {
this.effects = effectsNew.toArray(new PotionEffect[effectsNew.size()]); this.effects = effectsNew.toArray(new PotionEffect[effectsNew.size()]);
ActuallyAdditionsAPI.methodHandler.addEffectToStack(stack, this); ActuallyAdditionsAPI.methodHandler.addEffectToStack(stack, this);
} }*/
} }
this.effects = null; this.effects = null;
return true; return true;

View file

@ -10,40 +10,19 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheDusts; import de.ellpeck.actuallyadditions.mod.items.metalists.TheDusts;
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Rarity;
import net.minecraft.util.NonNullList;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class ItemDust extends ItemBase implements IColorProvidingItem { public class ItemDust extends ItemBase {
public static final TheDusts[] ALL_DUSTS = TheDusts.values(); public static final TheDusts[] ALL_DUSTS = TheDusts.values();
public ItemDust() { public ItemDust() {
super(name); //super(name);
this.setHasSubtypes(true);
}
@Override
public int getMetadata(int damage) {
return damage;
}
@Override
public String getDescriptionId(ItemStack stack) {
return stack.getItemDamage() >= ALL_DUSTS.length
? StringUtil.BUGGED_ITEM_NAME
: this.getDescriptionId() + "_" + ALL_DUSTS[stack.getItemDamage()].name;
} }
/*
@Override @Override
public Rarity getRarity(ItemStack stack) { public Rarity getRarity(ItemStack stack) {
return stack.getItemDamage() >= ALL_DUSTS.length return stack.getItemDamage() >= ALL_DUSTS.length
@ -51,31 +30,9 @@ public class ItemDust extends ItemBase implements IColorProvidingItem {
: ALL_DUSTS[stack.getItemDamage()].rarity; : ALL_DUSTS[stack.getItemDamage()].rarity;
} }
@Override */
@OnlyIn(Dist.CLIENT)
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list) {
if (this.isInCreativeTab(tab)) {
for (int j = 0; j < ALL_DUSTS.length; j++) {
list.add(new ItemStack(this, 1, j));
}
}
}
@Override
protected void registerRendering() {
for (int i = 0; i < ALL_DUSTS.length; i++) {
ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this, 1, i), this.getRegistryName(), "inventory");
}
}
@OnlyIn(Dist.CLIENT)
@Override
public IItemColor getItemColor() {
return (stack, pass) -> stack.getItemDamage() >= ALL_DUSTS.length
? 0xFFFFFF
: ALL_DUSTS[stack.getItemDamage()].color;
}
/*
@Override @Override
public int getItemBurnTime(ItemStack stack) { public int getItemBurnTime(ItemStack stack) {
if (stack.getMetadata() == 6) { if (stack.getMetadata() == 6) {
@ -83,4 +40,6 @@ public class ItemDust extends ItemBase implements IColorProvidingItem {
} }
return super.getItemBurnTime(stack); return super.getItemBurnTime(stack);
} }
*/
} }

View file

@ -1,124 +0,0 @@
/*
* This file ("ItemFoods.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemFoodBase;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheFoods;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.renderer.model.ModelResourceLocation;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Rarity;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class ItemFoods extends ItemFoodBase {
public static final TheFoods[] ALL_FOODS = TheFoods.values();
public ItemFoods() {
super(0, 0.0F, false, name);
this.setHasSubtypes(true);
this.setMaxDamage(0);
TheFoods.setReturnItems();
}
@Override
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase player) {
ItemStack stackToReturn = super.finishUsingItem(stack, world, player);
ItemStack returnItem = stack.getItemDamage() >= ALL_FOODS.length
? null
: ALL_FOODS[stack.getItemDamage()].returnItem;
if (StackUtil.isValid(returnItem) && player instanceof PlayerEntity) {
if (!((PlayerEntity) player).inventory.add(returnItem.copy())) {
if (!world.isClientSide) {
ItemEntity entityItem = new ItemEntity(player.world, player.posX, player.posY, player.posZ, returnItem.copy());
entityItem.setPickUpDelay(0);
player.world.addEntity(entityItem);
}
}
}
return stackToReturn;
}
@Override
public int getMaxItemUseDuration(ItemStack stack) {
return stack.getItemDamage() >= ALL_FOODS.length
? 0
: ALL_FOODS[stack.getItemDamage()].useDuration;
}
@Override
public EnumAction getItemUseAction(ItemStack stack) {
return stack.getItemDamage() >= ALL_FOODS.length
? EnumAction.EAT
: ALL_FOODS[stack.getItemDamage()].getsDrunken
? EnumAction.DRINK
: EnumAction.EAT;
}
@Override
public int getHealAmount(ItemStack stack) {
return stack.getItemDamage() >= ALL_FOODS.length
? 0
: ALL_FOODS[stack.getItemDamage()].healAmount;
}
@Override
public float getSaturationModifier(ItemStack stack) {
return stack.getItemDamage() >= ALL_FOODS.length
? 0
: ALL_FOODS[stack.getItemDamage()].saturation;
}
@Override
public int getMetadata(int damage) {
return damage;
}
@Override
public String getDescriptionId(ItemStack stack) {
return stack.getItemDamage() >= ALL_FOODS.length
? StringUtil.BUGGED_ITEM_NAME
: this.getDescriptionId() + "_" + ALL_FOODS[stack.getItemDamage()].name;
}
@Override
public Rarity getRarity(ItemStack stack) {
return stack.getItemDamage() >= ALL_FOODS.length
? Rarity.COMMON
: ALL_FOODS[stack.getItemDamage()].rarity;
}
@Override
@OnlyIn(Dist.CLIENT)
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list) {
if (this.isInCreativeTab(tab)) {
for (int j = 0; j < ALL_FOODS.length; j++) {
list.add(new ItemStack(this, 1, j));
}
}
}
@Override
protected void registerRendering() {
for (int i = 0; i < ALL_FOODS.length; i++) {
String name = this.getRegistryName() + "_" + ALL_FOODS[i].name;
ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this, 1, i), new ModelResourceLocation(name), "inventory");
}
}
}

View file

@ -10,75 +10,33 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.items.base.ActuallyItem;
import de.ellpeck.actuallyadditions.mod.items.base.ItemFoodBase;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheJams; import de.ellpeck.actuallyadditions.mod.items.metalists.TheJams;
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem; import net.minecraft.entity.LivingEntity;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.item.Food;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.init.Items;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
public class ItemJams extends ItemFoodBase implements IColorProvidingItem { public class ItemJams extends ActuallyItem {
public static final TheJams[] ALL_JAMS = TheJams.values(); public static final TheJams[] ALL_JAMS = TheJams.values();
public ItemJams() { public ItemJams() {
super(0, 0.0F, false, name); super(baseProps().food(new Food.Builder().alwaysEat().build()));
this.setHasSubtypes(true);
this.setMaxDamage(0);
this.setAlwaysEdible();
} }
@Override
public int getMetadata(int damage) {
return damage;
}
@Override //@Override
public String getDescriptionId(ItemStack stack) { public ItemStack onItemUseFinish(ItemStack stack, World world, LivingEntity player) {
return stack.getItemDamage() >= ALL_JAMS.length
? StringUtil.BUGGED_ITEM_NAME
: this.getDescriptionId() + "_" + ALL_JAMS[stack.getItemDamage()].name;
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return stack.getItemDamage() >= ALL_JAMS.length
? EnumRarity.COMMON
: ALL_JAMS[stack.getItemDamage()].rarity;
}
@Override
@OnlyIn(Dist.CLIENT)
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list) {
if (this.isInCreativeTab(tab)) {
for (int j = 0; j < ALL_JAMS.length; j++) {
list.add(new ItemStack(this, 1, j));
}
}
}
@Override
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase player) {
ItemStack stackToReturn = super.finishUsingItem(stack, world, player); ItemStack stackToReturn = super.finishUsingItem(stack, world, player);
/*
if (player instanceof PlayerEntity && !world.isClientSide && stack.getItemDamage() < ALL_JAMS.length) { if (player instanceof PlayerEntity && !world.isClientSide && stack.getItemDamage() < ALL_JAMS.length) {
PotionEffect firstEffectToGet = new PotionEffect(Potion.getPotionById(ALL_JAMS[stack.getItemDamage()].firstEffectToGet), 200); Effect firstEffectToGet = new Effect(Potion.getPotionById(ALL_JAMS[stack.getItemDamage()].firstEffectToGet), 200);
player.addPotionEffect(firstEffectToGet); player.addEffect(firstEffectToGet);
PotionEffect secondEffectToGet = new PotionEffect(Potion.getPotionById(ALL_JAMS[stack.getItemDamage()].secondEffectToGet), 600); Effect secondEffectToGet = new Effect(Potion.getPotionById(ALL_JAMS[stack.getItemDamage()].secondEffectToGet), 600);
player.addPotionEffect(secondEffectToGet); player.addEffect(secondEffectToGet);
ItemStack returnItem = new ItemStack(Items.GLASS_BOTTLE); ItemStack returnItem = new ItemStack(Items.GLASS_BOTTLE);
if (!((PlayerEntity) player).inventory.add(returnItem.copy())) { if (!((PlayerEntity) player).inventory.add(returnItem.copy())) {
@ -87,9 +45,12 @@ public class ItemJams extends ItemFoodBase implements IColorProvidingItem {
player.world.addEntity(entityItem); player.world.addEntity(entityItem);
} }
} }
*/
return stackToReturn; return stackToReturn;
} }
/*
@Override @Override
public int getHealAmount(ItemStack stack) { public int getHealAmount(ItemStack stack) {
return stack.getItemDamage() >= ALL_JAMS.length return stack.getItemDamage() >= ALL_JAMS.length
@ -104,20 +65,5 @@ public class ItemJams extends ItemFoodBase implements IColorProvidingItem {
: ALL_JAMS[stack.getItemDamage()].saturation; : ALL_JAMS[stack.getItemDamage()].saturation;
} }
@Override */
protected void registerRendering() {
for (int i = 0; i < ALL_JAMS.length; i++) {
ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this, 1, i), this.getRegistryName(), "inventory");
}
}
@Override
@OnlyIn(Dist.CLIENT)
public IItemColor getItemColor() {
return (stack, pass) -> pass > 0
? stack.getItemDamage() >= ALL_JAMS.length
? 0xFFFFFF
: ALL_JAMS[stack.getItemDamage()].color
: 0xFFFFFF;
}
} }

View file

@ -11,32 +11,23 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.api.misc.IDisplayStandItem; import de.ellpeck.actuallyadditions.api.misc.IDisplayStandItem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.items.metalists.ThePotionRings; import de.ellpeck.actuallyadditions.mod.items.metalists.ThePotionRings;
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Collections;
import java.util.List; import java.util.List;
public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDisplayStandItem { public class ItemPotionRing extends ItemBase implements IDisplayStandItem {
public static final ThePotionRings[] ALL_RINGS = ThePotionRings.values(); public static final ThePotionRings[] ALL_RINGS = ThePotionRings.values();
@ -62,11 +53,6 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
} }
} }
@Override
public int getMetadata(int damage) {
return damage;
}
@Override @Override
public double getDurabilityForDisplay(ItemStack stack) { public double getDurabilityForDisplay(ItemStack stack) {
double diff = MAX_BLAZE - getStoredBlaze(stack); double diff = MAX_BLAZE - getStoredBlaze(stack);
@ -79,22 +65,15 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
return MathHelper.hsvToRgb(Math.max(0.0F, (float) curr / MAX_BLAZE) / 3.0F, 1.0F, 1.0F); return MathHelper.hsvToRgb(Math.max(0.0F, (float) curr / MAX_BLAZE) / 3.0F, 1.0F, 1.0F);
} }
@Override
public String getDescriptionId(ItemStack stack) {
return stack.getItemDamage() >= ALL_RINGS.length
? StringUtil.BUGGED_ITEM_NAME
: this.getDescriptionId() + ALL_RINGS[stack.getItemDamage()].name;
}
@Override @Override
public boolean showDurabilityBar(ItemStack itemStack) { public boolean showDurabilityBar(ItemStack itemStack) {
return true; return true;
} }
@Override @Override
public void onUpdate(ItemStack stack, World world, Entity player, int par4, boolean par5) { public void inventoryTick(ItemStack stack, World world, Entity player, int par4, boolean par5) {
super.onUpdate(stack, world, player, par4, par5); super.inventoryTick(stack, world, player, par4, par5);
/*
if (!world.isClientSide && stack.getItemDamage() < ALL_RINGS.length) { if (!world.isClientSide && stack.getItemDamage() < ALL_RINGS.length) {
if (player instanceof PlayerEntity) { if (player instanceof PlayerEntity) {
PlayerEntity thePlayer = (PlayerEntity) player; PlayerEntity thePlayer = (PlayerEntity) player;
@ -112,13 +91,15 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
} }
} }
} }
*/
} }
@Override @Override
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
return slotChanged || !ItemStack.isSame(oldStack, newStack); return slotChanged || !ItemStack.isSame(oldStack, newStack);
} }
/*
@Override @Override
public String getItemStackDisplayName(ItemStack stack) { public String getItemStackDisplayName(ItemStack stack) {
if (Util.isClient()) { if (Util.isClient()) {
@ -137,8 +118,10 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
return standardName; return standardName;
} }
*/
/*
@Override @Override
public EnumRarity getRarity(ItemStack stack) { public Rarity getRarity(ItemStack stack) {
return stack.getItemDamage() >= ALL_RINGS.length return stack.getItemDamage() >= ALL_RINGS.length
? EnumRarity.COMMON ? EnumRarity.COMMON
: ALL_RINGS[stack.getItemDamage()].rarity; : ALL_RINGS[stack.getItemDamage()].rarity;
@ -165,13 +148,7 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
} }
} }
@Override */
@OnlyIn(Dist.CLIENT)
public IItemColor getItemColor() {
return (stack, tintIndex) -> stack.getItemDamage() >= ALL_RINGS.length
? 0xFFFFFF
: ALL_RINGS[stack.getItemDamage()].color;
}
@Override @Override
public boolean update(ItemStack stack, TileEntity tile, int elapsedTicks) { public boolean update(ItemStack stack, TileEntity tile, int elapsedTicks) {
@ -179,16 +156,16 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
int range = advanced int range = advanced
? 48 ? 48
: 16; : 16;
List<EntityLivingBase> entities = tile.getLevel().getEntitiesOfClass(EntityLivingBase.class, new AxisAlignedBB(tile.getBlockPos().getX() - range, tile.getBlockPos().getY() - range, tile.getBlockPos().getZ() - range, tile.getBlockPos().getX() + range, tile.getBlockPos().getY() + range, tile.getBlockPos().getZ() + range)); List<LivingEntity> entities = tile.getLevel().getEntitiesOfClass(LivingEntity.class, new AxisAlignedBB(tile.getBlockPos().getX() - range, tile.getBlockPos().getY() - range, tile.getBlockPos().getZ() - range, tile.getBlockPos().getX() + range, tile.getBlockPos().getY() + range, tile.getBlockPos().getZ() + range));
if (entities != null && !entities.isEmpty()) { if (entities != null && !entities.isEmpty()) {
if (advanced) { if (advanced) {
//Give all entities the effect //Give all entities the effect
for (EntityLivingBase entity : entities) { for (LivingEntity entity : entities) {
this.effectEntity(entity, stack, true); this.effectEntity(entity, stack, true);
} }
return true; return true;
} else { } else {/*
Potion potion = Potion.getPotionById(ThePotionRings.values()[stack.getItemDamage()].effectID); Potion potion = Potion.byName(ThePotionRings.values()[stack.getItemDamage()].effectID);
for (EntityLivingBase entity : entities) { for (EntityLivingBase entity : entities) {
if (entity.isPotionActive(potion)) { if (entity.isPotionActive(potion)) {
//Sometimes make the effect switch to someone else //Sometimes make the effect switch to someone else
@ -202,14 +179,16 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
return true; return true;
} }
} }
*/
return true;
} }
//Give the effect to someone new if no one had it or it randomly switched //Give the effect to someone new if no one had it or it randomly switched
Collections.shuffle(entities); //Collections.shuffle(entities);
this.effectEntity(entities.get(0), stack, true); //this.effectEntity(entities.get(0), stack, true);
return true; //return true;
}
} }
return false; return false;
} }
@ -218,7 +197,8 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
return 325; return 325;
} }
private boolean effectEntity(EntityLivingBase thePlayer, ItemStack stack, boolean canUseBasic) { private boolean effectEntity(LivingEntity thePlayer, ItemStack stack, boolean canUseBasic) {
/*
ThePotionRings effect = ThePotionRings.values()[stack.getItemDamage()]; ThePotionRings effect = ThePotionRings.values()[stack.getItemDamage()];
Potion potion = Potion.getPotionById(effect.effectID); Potion potion = Potion.getPotionById(effect.effectID);
PotionEffect activeEffect = thePlayer.getActivePotionEffect(potion); PotionEffect activeEffect = thePlayer.getActivePotionEffect(potion);
@ -233,12 +213,14 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
return true; return true;
} }
} }
*/
return false; return false;
} }
@Override @Override
public void addInformation(ItemStack stack, @Nullable World playerIn, List<String> tooltip, ITooltipFlag advanced) { public void appendHoverText(ItemStack stack, @Nullable World playerIn, List<ITextComponent> tooltip, ITooltipFlag advanced) {
super.appendHoverText(stack, playerIn, tooltip, advanced); super.appendHoverText(stack, playerIn, tooltip, advanced);
tooltip.add(String.format("%d/%d %s", getStoredBlaze(stack), MAX_BLAZE, StringUtil.localize("item." + ActuallyAdditions.MODID + ".item_misc_ring.storage"))); //tooltip.add(String.format("%d/%d %s", getStoredBlaze(stack), MAX_BLAZE, StringUtil.localize("item." + ActuallyAdditions.MODID + ".item_misc_ring.storage")));
} }
} }

View file

@ -14,13 +14,12 @@ import com.google.common.collect.Sets;
import de.ellpeck.actuallyadditions.mod.items.base.ItemToolAA; import de.ellpeck.actuallyadditions.mod.items.base.ItemToolAA;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.IItemTier; import net.minecraft.item.IItemTier;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;

View file

@ -0,0 +1,18 @@
package de.ellpeck.actuallyadditions.mod.items.base;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import net.minecraft.item.Item;
/**
* I'm using a custom class here as I'm sure we'll need a unified way of declaring rules
* but also so we can always know if something is ours in the simplest form.
*/
public abstract class ActuallyItem extends Item implements IActuallyItem {
public ActuallyItem(Properties properties) {
super(properties);
}
protected static Properties baseProps() {
return new Properties().tab(ActuallyAdditions.GROUP);
}
}

View file

@ -0,0 +1,5 @@
package de.ellpeck.actuallyadditions.mod.items.base;
// Currently nothing :cry:
public interface IActuallyItem {
}

View file

@ -13,14 +13,12 @@ package de.ellpeck.actuallyadditions.mod.items.base;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemSeedFood;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockReader;
public class ItemFoodSeed extends ItemSeedFood { public class ItemFoodSeed /*extends ItemSeedFood */{ //TODO what is this?!
public final Block plant; public final Block plant;
public final String name; public final String name;
@ -28,7 +26,7 @@ public class ItemFoodSeed extends ItemSeedFood {
private final int maxUseDuration; private final int maxUseDuration;
public ItemFoodSeed(String name, String oredictName, Block plant, Item returnItem, int returnMeta, int healAmount, float saturation, int maxUseDuration) { public ItemFoodSeed(String name, String oredictName, Block plant, Item returnItem, int returnMeta, int healAmount, float saturation, int maxUseDuration) {
super(healAmount, saturation, plant, Blocks.FARMLAND); //super(healAmount, saturation, plant, Blocks.FARMLAND);
this.name = name; this.name = name;
this.oredictName = oredictName; this.oredictName = oredictName;
this.plant = plant; this.plant = plant;
@ -39,13 +37,13 @@ public class ItemFoodSeed extends ItemSeedFood {
} }
} }
@Override //@Override
public int getMaxItemUseDuration(ItemStack stack) { public int getMaxItemUseDuration(ItemStack stack) {
return this.maxUseDuration; return this.maxUseDuration;
} }
@Override //@Override
public BlockState getPlant(IBlockAccess world, BlockPos pos) { public BlockState getPlant(IBlockReader world, BlockPos pos) {
return this.plant.defaultBlockState(); return this.plant.defaultBlockState();
} }
} }

View file

@ -13,20 +13,17 @@ package de.ellpeck.actuallyadditions.mod.items.base;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemSeeds;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockReader;
public class ItemSeed extends ItemSeeds { public class ItemSeed /* extends ItemSeeds*/ {
public final Block plant; public final Block plant;
public final String oredictName; public final String oredictName;
public ItemSeed(String oredictName, Block plant, Item returnItem, int returnMeta) { public ItemSeed(String oredictName, Block plant, Item returnItem, int returnMeta) {
super(plant, Blocks.FARMLAND); //super(plant, Blocks.FARMLAND);
this.oredictName = oredictName; this.oredictName = oredictName;
this.plant = plant; this.plant = plant;
@ -35,8 +32,8 @@ public class ItemSeed extends ItemSeeds {
} }
} }
@Override //@Override
public BlockState getPlant(IBlockAccess world, BlockPos pos) { public BlockState getPlant(IBlockReader world, BlockPos pos) {
return this.plant.defaultBlockState(); return this.plant.defaultBlockState();
} }
} }

View file

@ -0,0 +1,39 @@
package de.ellpeck.actuallyadditions.mod.items.misc;
import de.ellpeck.actuallyadditions.mod.items.base.ActuallyItem;
public class DrillAugmentItem extends ActuallyItem {
private final AugmentType type;
public DrillAugmentItem(AugmentType type) {
super(baseProps().stacksTo(1));
this.type = type;
}
public AugmentType getType() {
return type;
}
public enum AugmentType {
SPEED_AUGMENT_I(50),
SPEED_AUGMENT_II(75),
SPEED_AUGMENT_III(175),
SILK_TOUCH_AUGMENT(100),
FORTUNE_AUGMENT_I(40),
FORTUNE_AUGMENT_II(80),
MINING_AUGMENT_I(10),
MINING_AUGMENT_II(30),
BLOCK_PLACING_AUGMENT(0);
int energyCost;
AugmentType(int energyCost) {
this.energyCost = energyCost;
}
public int getEnergyCost() {
return energyCost;
}
}
}

View file

@ -0,0 +1,62 @@
package de.ellpeck.actuallyadditions.mod.items.misc;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.items.base.ActuallyItem;
import net.minecraft.item.Food;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
public class YummyItem extends ActuallyItem {
private final Foods food;
public YummyItem(Foods food) {
super(baseProps().food(food.food));
this.food = food;
}
public enum Foods {
CHEESE(new Food.Builder().nutrition(1).saturationMod(0.05F), 3),
PUMPKIN_STEW(new Food.Builder().nutrition(6).saturationMod(0.3F), 30, true, new ItemStack(Items.BOWL)),
CARROT_JUICE(new Food.Builder().nutrition(4).saturationMod(0.2F), 20, true, new ItemStack(Items.GLASS_BOTTLE)),
FISH_N_CHIPS(new Food.Builder().nutrition(14).saturationMod(0.65F), 40, new ItemStack(ActuallyItems.PAPER_CONE.get())),
FRENCH_FRIES(new Food.Builder().nutrition(10).saturationMod(0.6F), 32, new ItemStack(ActuallyItems.PAPER_CONE.get())),
FRENCH_FRY(new Food.Builder().nutrition(2).saturationMod(0.025F), 3),
SPAGHETTI(new Food.Builder().nutrition(7).saturationMod(0.4F), 38, new ItemStack(Items.BOWL)),
NOODLE(new Food.Builder().nutrition(1).saturationMod(0.01F), 3),
CHOCOLATE_CAKE(new Food.Builder().nutrition(16).saturationMod(0.8F), 45),
CHOCOLATE(new Food.Builder().nutrition(3).saturationMod(0.3F), 15),
TOAST(new Food.Builder().nutrition(3).saturationMod(0.08F), 25),
SUBMARINE_SANDWICH(new Food.Builder().nutrition(9).saturationMod(0.4F), 40),
BIG_COOKIE(new Food.Builder().nutrition(4).saturationMod(0.25F), 20),
HAMBURGER(new Food.Builder().nutrition(13).saturationMod(0.65F), 40),
PIZZA(new Food.Builder().nutrition(16).saturationMod(0.8F), 45),
BAGUETTE(new Food.Builder().nutrition(6).saturationMod(0.5F), 25),
RICE(new Food.Builder().nutrition(2).saturationMod(0.05F), 10),
RICE_BREAD(new Food.Builder().nutrition(6).saturationMod(0.5F), 25),
DOUGHNUT(new Food.Builder().nutrition(2).saturationMod(0.1F), 10),
CHOCOLATE_TOAST(new Food.Builder().nutrition(5).saturationMod(0.2F), 40),
BACON(new Food.Builder().nutrition(4).saturationMod(0.1F), 30);
Food food;
int useDuration;
boolean isDrunken;
ItemStack returnItem;
Foods(Food.Builder food, int useDuration, boolean isDrunken, ItemStack returnItem) {
this.food = food.build();
this.useDuration = useDuration;
this.isDrunken = isDrunken;
this.returnItem = returnItem;
}
Foods(Food.Builder food, int useDuration) {
this(food, useDuration, false, ItemStack.EMPTY);
}
Foods(Food.Builder food, int useDuration, ItemStack returnItem) {
this(food, useDuration, false, returnItem);
}
}
}

View file

@ -12,7 +12,6 @@ package de.ellpeck.actuallyadditions.mod.network;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter; import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter;
import de.ellpeck.actuallyadditions.mod.booklet.chapter.BookletChapterTrials;
import de.ellpeck.actuallyadditions.mod.data.PlayerData; import de.ellpeck.actuallyadditions.mod.data.PlayerData;
import de.ellpeck.actuallyadditions.mod.data.PlayerData.PlayerSave; import de.ellpeck.actuallyadditions.mod.data.PlayerData.PlayerSave;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -75,9 +74,9 @@ public final class PacketHandlerHelper {
int total = 0; int total = 0;
for (IBookletChapter chapter : ActuallyAdditionsAPI.entryTrials.getAllChapters()) { for (IBookletChapter chapter : ActuallyAdditionsAPI.entryTrials.getAllChapters()) {
if (chapter instanceof BookletChapterTrials) { //if (chapter instanceof BookletChapterTrials) {
total++; // total++;
} //}
} }
if (data.completedTrials.size() >= total) { if (data.completedTrials.size() >= total) {

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerEnervator; import de.ellpeck.actuallyadditions.mod.inventory.ContainerEnervator;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover;
@ -29,8 +30,6 @@ import net.minecraftforge.energy.IEnergyStorage;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase.NBTType;
public class TileEntityEnervator extends TileEntityInventoryBase implements ISharingEnergyProvider, INamedContainerProvider { public class TileEntityEnervator extends TileEntityInventoryBase implements ISharingEnergyProvider, INamedContainerProvider {
public final CustomEnergyStorage storage = new CustomEnergyStorage(50000, 0, 1000); public final CustomEnergyStorage storage = new CustomEnergyStorage(50000, 0, 1000);
@ -38,7 +37,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
private int lastEnergy; private int lastEnergy;
public TileEntityEnervator() { public TileEntityEnervator() {
super(ActuallyTiles.ENERVATOR_TILE.get(), 2); super(ActuallyBlocks.ENERVATOR.getTileEntityType(), 2);
} }
@Override @Override

View file

@ -1,332 +0,0 @@
/*
* This file ("TileEntityInputter.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerInputter;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.SlotlessableItemHandlerWrapper;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.INamedContainerProvider;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.AbstractFurnaceTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase.NBTType;
public class TileEntityInputter extends TileEntityInventoryBase implements IButtonReactor, INumberReactor, INamedContainerProvider {
public static final int OKAY_BUTTON_ID = 133;
private final SlotlessableItemHandlerWrapper wrapper = new SlotlessableItemHandlerWrapper(this.lazyInv, null);
public int sideToPut = -1;
public int slotToPutStart;
public int slotToPutEnd;
public Map<Direction, SlotlessableItemHandlerWrapper> placeToPut = new ConcurrentHashMap<>();
public int sideToPull = -1;
public int slotToPullStart;
public int slotToPullEnd;
public Map<Direction, SlotlessableItemHandlerWrapper> placeToPull = new ConcurrentHashMap<>();
public boolean isAdvanced;
public FilterSettings leftFilter = new FilterSettings(12, true, true, false, false, 0, -1000);
public FilterSettings rightFilter = new FilterSettings(12, true, true, false, false, 0, -2000);
private int lastPutSide;
private int lastPutStart;
private int lastPutEnd;
private int lastPullSide;
private int lastPullStart;
private int lastPullEnd;
public TileEntityInputter(TileEntityType<?> type, int slots) {
super(type, slots);
}
public TileEntityInputter() {
super(ActuallyTiles.INPUTTER_TILE.get(), 1);
this.isAdvanced = false;
}
@Override
public void onNumberReceived(double number, int textID, PlayerEntity player) {
int text = (int) number;
if (text != -1) {
if (textID == 0) {
this.slotToPutStart = Math.max(text, 0);
}
if (textID == 1) {
this.slotToPutEnd = Math.max(text, 0);
}
if (textID == 2) {
this.slotToPullStart = Math.max(text, 0);
}
if (textID == 3) {
this.slotToPullEnd = Math.max(text, 0);
}
}
this.setChanged();
}
private boolean newPulling() {
for (Direction side : this.placeToPull.keySet()) {
WorldUtil.doItemInteraction(this.placeToPull.get(side), this.wrapper, Integer.MAX_VALUE, this.slotToPullStart, this.slotToPullEnd, 0, 1, !this.isAdvanced
? null
: this.leftFilter);
if (this.placeToPull instanceof TileEntityItemInterface) {
break;
}
}
return false;
}
private boolean newPutting() {
if (!this.isAdvanced || this.rightFilter.check(this.inv.getStackInSlot(0))) {
for (Direction side : this.placeToPut.keySet()) {
WorldUtil.doItemInteraction(this.wrapper, this.placeToPut.get(side), Integer.MAX_VALUE, 0, 1, this.slotToPutStart, this.slotToPutEnd, null);
if (this.placeToPut instanceof TileEntityItemInterface) {
break;
}
}
}
return false;
}
@Override
public boolean shouldSaveDataOnChangeOrWorldStart() {
return true;
}
/**
* Sets all of the relevant variables
*/
@Override
public void saveDataOnChangeOrWorldStart() {
this.placeToPull.clear();
this.placeToPut.clear();
if (this.sideToPull != -1) {
Direction side = WorldUtil.getDirectionBySidesInOrder(this.sideToPull);
BlockPos offset = this.worldPosition.relative(side);
if (this.level.hasChunkAt(offset)) {
TileEntity tile = this.level.getBlockEntity(offset);
if (tile != null) {
for (Direction facing : Direction.values()) {
LazyOptional<IItemHandler> normal;
if (tile instanceof AbstractFurnaceTileEntity) {
normal = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
} else {
normal = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
}
// TODO: [port] add support for this back eventually.
Object slotless = null;
// if (ActuallyAdditions.commonCapsLoaded) {
// if (tile.hasCapability(SlotlessItemHandlerConfig.CAPABILITY, facing)) {
// slotless = tile.getCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
// }
// }
this.placeToPull.put(facing.getOpposite(), new SlotlessableItemHandlerWrapper(normal, slotless));
}
if (this.slotToPullEnd <= 0) {
tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)
.ifPresent(cap -> this.slotToPullEnd = cap.getSlots());
}
}
}
}
if (this.sideToPut != -1) {
Direction side = WorldUtil.getDirectionBySidesInOrder(this.sideToPut);
BlockPos offset = this.worldPosition.relative(side);
if (this.level.hasChunkAt(offset)) {
TileEntity tile = this.level.getBlockEntity(offset);
if (tile != null) {
for (Direction facing : Direction.values()) {
LazyOptional<IItemHandler> normal = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
// TODO: [port] add support for this back eventually.
Object slotless = null;
// if (ActuallyAdditions.commonCapsLoaded) {
// if (tile.hasCapability(SlotlessItemHandlerConfig.CAPABILITY, facing)) {
// slotless = tile.getCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
// }
// }
this.placeToPut.put(facing.getOpposite(), new SlotlessableItemHandlerWrapper(normal, slotless));
}
if (this.slotToPutEnd <= 0) {
tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)
.ifPresent(cap -> this.slotToPutEnd = cap.getSlots());
}
}
}
}
}
@Override
public void onButtonPressed(int buttonID, PlayerEntity player) {
this.leftFilter.onButtonPressed(buttonID);
this.rightFilter.onButtonPressed(buttonID);
//Reset the Slots
if (buttonID == 0 || buttonID == 1) {
this.slotToPutStart = 0;
this.slotToPutEnd = 0;
}
if (buttonID == 2 || buttonID == 3) {
this.slotToPullStart = 0;
this.slotToPullEnd = 0;
}
if (buttonID == 0) {
this.sideToPut++;
}
if (buttonID == 1) {
this.sideToPut--;
}
if (buttonID == 2) {
this.sideToPull++;
}
if (buttonID == 3) {
this.sideToPull--;
}
if (this.sideToPut >= 6) {
this.sideToPut = -1;
} else if (this.sideToPut < -1) {
this.sideToPut = 5;
} else if (this.sideToPull >= 6) {
this.sideToPull = -1;
} else if (this.sideToPull < -1) {
this.sideToPull = 5;
}
this.setChanged();
this.saveDataOnChangeOrWorldStart();
}
@Override
public void writeSyncableNBT(CompoundNBT compound, NBTType type) {
super.writeSyncableNBT(compound, type);
if (type != NBTType.SAVE_BLOCK) {
compound.putInt("SideToPut", this.sideToPut);
compound.putInt("SlotToPut", this.slotToPutStart);
compound.putInt("SlotToPutEnd", this.slotToPutEnd);
compound.putInt("SideToPull", this.sideToPull);
compound.putInt("SlotToPull", this.slotToPullStart);
compound.putInt("SlotToPullEnd", this.slotToPullEnd);
}
this.leftFilter.writeToNBT(compound, "LeftFilter");
this.rightFilter.writeToNBT(compound, "RightFilter");
}
@Override
public void readSyncableNBT(CompoundNBT compound, NBTType type) {
if (type != NBTType.SAVE_BLOCK) {
this.sideToPut = compound.getInt("SideToPut");
this.slotToPutStart = compound.getInt("SlotToPut");
this.slotToPutEnd = compound.getInt("SlotToPutEnd");
this.sideToPull = compound.getInt("SideToPull");
this.slotToPullStart = compound.getInt("SlotToPull");
this.slotToPullEnd = compound.getInt("SlotToPullEnd");
}
this.leftFilter.readFromNBT(compound, "LeftFilter");
this.rightFilter.readFromNBT(compound, "RightFilter");
super.readSyncableNBT(compound, type);
}
@Override
public void updateEntity() {
super.updateEntity();
if (!this.level.isClientSide) {
//Is Block not powered by Redstone?
if (!this.isRedstonePowered) {
if (this.ticksElapsed % 30 == 0) {
if (!(this.sideToPull == this.sideToPut && this.slotToPullStart == this.slotToPutStart && this.slotToPullEnd == this.slotToPutEnd)) {
if (!StackUtil.isValid(this.inv.getStackInSlot(0)) && this.sideToPull != -1 && this.placeToPull != null) {
this.newPulling();
}
if (StackUtil.isValid(this.inv.getStackInSlot(0)) && this.sideToPut != -1 && this.placeToPut != null) {
this.newPutting();
}
}
}
}
//Update the Client
if ((this.sideToPut != this.lastPutSide || this.sideToPull != this.lastPullSide || this.slotToPullStart != this.lastPullStart || this.slotToPullEnd != this.lastPullEnd || this.slotToPutStart != this.lastPutStart || this.slotToPutEnd != this.lastPutEnd || this.leftFilter.needsUpdateSend() || this.rightFilter.needsUpdateSend()) && this.sendUpdateWithInterval()) {
this.lastPutSide = this.sideToPut;
this.lastPullSide = this.sideToPull;
this.lastPullStart = this.slotToPullStart;
this.lastPullEnd = this.slotToPullEnd;
this.lastPutStart = this.slotToPutStart;
this.lastPutEnd = this.slotToPutEnd;
this.leftFilter.updateLasts();
this.rightFilter.updateLasts();
}
}
}
@Override
public IAcceptor getAcceptor() {
return (slot, stack, automation) -> !automation || slot == 0;
}
@Override
public IRemover getRemover() {
return (slot, automation) -> !automation || slot == 0;
}
@Override
public ITextComponent getDisplayName() {
return StringTextComponent.EMPTY;
}
@Nullable
@Override
public Container createMenu(int windowId, PlayerInventory playerInventory, PlayerEntity player) {
return new ContainerInputter(windowId, playerInventory, this);
}
}

View file

@ -13,7 +13,6 @@ package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.api.tile.IPhantomTile; import de.ellpeck.actuallyadditions.api.tile.IPhantomTile;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerPhantomPlacer; import de.ellpeck.actuallyadditions.mod.inventory.ContainerPhantomPlacer;
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
@ -39,8 +38,6 @@ import net.minecraft.world.server.ServerWorld;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase.NBTType;
public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements IPhantomTile, IButtonReactor, INamedContainerProvider { public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements IPhantomTile, IButtonReactor, INamedContainerProvider {
public static final int RANGE = 3; public static final int RANGE = 3;
@ -195,11 +192,6 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
this.boundPosition = pos; this.boundPosition = pos;
} }
@Override
public int getGuiID() {
return GuiHandler.GuiTypes.PHANTOM_PLACER.ordinal();
}
@Override @Override
public int getRange() { public int getRange() {
return this.range; return this.range;

View file

@ -1,22 +0,0 @@
/*
* This file ("IColorProvidingBlock.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.util;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public interface IColorProvidingBlock {
@OnlyIn(Dist.CLIENT)
IBlockColor getBlockColor();
}

View file

@ -1,22 +0,0 @@
/*
* This file ("IColorProvidingItem.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.util;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public interface IColorProvidingItem {
@OnlyIn(Dist.CLIENT)
IItemColor getItemColor();
}