Upgrades
This commit is contained in:
@@ -8,9 +8,11 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryIt
|
||||
import com.raoulvdberge.refinedstorage.item.*;
|
||||
import com.raoulvdberge.refinedstorage.item.group.MainItemGroup;
|
||||
import com.raoulvdberge.refinedstorage.network.NetworkHandler;
|
||||
import com.raoulvdberge.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
@@ -30,6 +32,7 @@ public final class RS {
|
||||
public RS() {
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onCommonSetup);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(Item.class, this::onRegisterItems);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(IRecipeSerializer.class, this::onRegisterRecipeSerializers);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -40,6 +43,11 @@ public final class RS {
|
||||
API.instance().getStorageDiskRegistry().add(StorageDiskFactoryFluid.ID, new StorageDiskFactoryFluid());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRegisterRecipeSerializers(RegistryEvent.Register<IRecipeSerializer<?>> e) {
|
||||
e.getRegistry().register(new UpgradeWithEnchantedBookRecipeSerializer().setRegistryName(RS.ID, "upgrade_with_enchanted_book"));
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRegisterBlocks(RegistryEvent.Register<Block> e) {
|
||||
|
||||
@@ -82,6 +90,10 @@ public final class RS {
|
||||
}
|
||||
|
||||
e.getRegistry().register(new ItemStorageHousing());
|
||||
|
||||
for (ItemUpgrade.Type type : ItemUpgrade.Type.values()) {
|
||||
e.getRegistry().register(new ItemUpgrade(type));
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO
|
||||
|
@@ -97,7 +97,9 @@ public class RSConfig {
|
||||
public int craftingUpgradeUsage;
|
||||
public int stackUpgradeUsage;
|
||||
public int silkTouchUpgradeUsage;
|
||||
public int fortuneUpgradeUsagePerFortune;
|
||||
public int fortune1UpgradeUsagePerFortune;
|
||||
public int fortune2UpgradeUsagePerFortune;
|
||||
public int fortune3UpgradeUsagePerFortune;
|
||||
//endregion
|
||||
|
||||
//region Readers and Writers
|
||||
@@ -248,7 +250,9 @@ public class RSConfig {
|
||||
craftingUpgradeUsage = config.getInt("crafting", UPGRADES, 5, 0, Integer.MAX_VALUE, "The additional energy used per Crafting Upgrade");
|
||||
stackUpgradeUsage = config.getInt("stack", UPGRADES, 12, 0, Integer.MAX_VALUE, "The additional energy used per Stack Upgrade");
|
||||
silkTouchUpgradeUsage = config.getInt("silkTouch", UPGRADES, 15, 0, Integer.MAX_VALUE, "The additional energy used by the Silk Touch Upgrade");
|
||||
fortuneUpgradeUsagePerFortune = config.getInt("fortune", UPGRADES, 10, 0, Integer.MAX_VALUE, "The additional energy used by the Fortune Upgrade, multiplied by the level of the enchantment");
|
||||
fortune1UpgradeUsagePerFortune = config.getInt("fortune1", UPGRADES, 10, 0, Integer.MAX_VALUE, "The additional energy used by the Fortune 1 Upgrade");
|
||||
fortune2UpgradeUsagePerFortune = config.getInt("fortune2", UPGRADES, 10, 0, Integer.MAX_VALUE, "The additional energy used by the Fortune 2 Upgrade");
|
||||
fortune3UpgradeUsagePerFortune = config.getInt("fortune3", UPGRADES, 10, 0, Integer.MAX_VALUE, "The additional energy used by the Fortune 3 Upgrade");
|
||||
//endregion
|
||||
|
||||
//region Readers and Writers
|
||||
|
@@ -57,9 +57,27 @@ public final class RSItems {
|
||||
public static final ItemStorageDisk CREATIVE_STORAGE_DISK = null;
|
||||
|
||||
public static final ItemPattern PATTERN = new ItemPattern();
|
||||
public static final ItemUpgrade UPGRADE = new ItemUpgrade();
|
||||
public static final ItemFilter FILTER = new ItemFilter();
|
||||
|
||||
@ObjectHolder(RS.ID + ":upgrade")
|
||||
public static final ItemUpgrade UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":speed_upgrade")
|
||||
public static final ItemUpgrade SPEED_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":range_upgrade")
|
||||
public static final ItemUpgrade RANGE_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":crafting_upgrade")
|
||||
public static final ItemUpgrade CRAFTING_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":stack_upgrade")
|
||||
public static final ItemUpgrade STACK_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":silk_touch_upgrade")
|
||||
public static final ItemUpgrade SILK_TOUCH_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":fortune_1_upgrade")
|
||||
public static final ItemUpgrade FORTUNE_1_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":fortune_2_upgrade")
|
||||
public static final ItemUpgrade FORTUNE_2_UPGRADE = null;
|
||||
@ObjectHolder(RS.ID + ":fortune_3_upgrade")
|
||||
public static final ItemUpgrade FORTUNE_3_UPGRADE = null;
|
||||
|
||||
@ObjectHolder(RS.ID + ":network_card")
|
||||
public static final ItemNetworkCard NETWORK_CARD = null;
|
||||
|
||||
|
@@ -238,7 +238,7 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
|
||||
}*/
|
||||
}
|
||||
}
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.Type.CRAFTING)) {
|
||||
ItemStack craft = itemFilters.getStackInSlot(0);
|
||||
|
||||
network.getCraftingManager().request(this, craft, 1);
|
||||
@@ -250,7 +250,7 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
|
||||
|
||||
if (took != null) {
|
||||
DefaultDispenseItemBehavior.doDispense(world, took, 6, getDirection(), new Position(getDispensePositionX(), getDispensePositionY(), getDispensePositionZ()));
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.Type.CRAFTING)) {
|
||||
ItemStack craft = itemFilters.getStackInSlot(0);
|
||||
|
||||
network.getCraftingManager().request(this, craft, 1);
|
||||
|
@@ -236,7 +236,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
||||
|
||||
@Override
|
||||
public int getUpdateInterval() {
|
||||
switch (upgrades.getUpgradeCount(ItemUpgrade.TYPE_SPEED)) {
|
||||
switch (upgrades.getUpgradeCount(ItemUpgrade.Type.SPEED)) {
|
||||
case 0:
|
||||
return 10;
|
||||
case 1:
|
||||
@@ -254,7 +254,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
||||
|
||||
@Override
|
||||
public int getMaximumSuccessfulCraftingUpdates() {
|
||||
switch (upgrades.getUpgradeCount(ItemUpgrade.TYPE_SPEED)) {
|
||||
switch (upgrades.getUpgradeCount(ItemUpgrade.Type.SPEED)) {
|
||||
case 0:
|
||||
return 1;
|
||||
case 1:
|
||||
|
@@ -88,7 +88,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, Action.SIMULATE);
|
||||
|
||||
if (took == null) {
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.Type.CRAFTING)) {
|
||||
network.getCraftingManager().request(new SlottedCraftingRequest(this, filterSlot), slot, stackSize);
|
||||
}
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
@@ -141,7 +141,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
handler.fill(took, IFluidHandler.FluidAction.EXECUTE);
|
||||
}
|
||||
}
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
} else if (upgrades.hasUpgrade(ItemUpgrade.Type.CRAFTING)) {
|
||||
network.getCraftingManager().request(this, stack, toExtract);
|
||||
}
|
||||
}
|
||||
|
@@ -138,7 +138,7 @@ public class NetworkNodeFluidInterface extends NetworkNode {
|
||||
// That means we still have to autocraft 2 fluids.
|
||||
delta -= result == null ? 0 : result.getAmount();
|
||||
|
||||
if (delta > 0 && upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
if (delta > 0 && upgrades.hasUpgrade(ItemUpgrade.Type.CRAFTING)) {
|
||||
network.getCraftingManager().request(this, wanted, delta);
|
||||
}
|
||||
} else if (delta < 0) {
|
||||
|
@@ -118,7 +118,7 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable {
|
||||
// That means we still have to autocraft 2 items.
|
||||
delta -= result == null ? 0 : result.getCount();
|
||||
|
||||
if (delta > 0 && upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
if (delta > 0 && upgrades.hasUpgrade(ItemUpgrade.Type.CRAFTING)) {
|
||||
network.getCraftingManager().request(new SlottedCraftingRequest(this, i), wanted, delta);
|
||||
}
|
||||
} else if (delta < 0) {
|
||||
|
@@ -52,7 +52,7 @@ public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWire
|
||||
|
||||
@Override
|
||||
public int getRange() {
|
||||
return RS.INSTANCE.config.wirelessTransmitterBaseRange + (upgrades.getUpgradeCount(ItemUpgrade.TYPE_RANGE) * RS.INSTANCE.config.wirelessTransmitterRangePerUpgrade);
|
||||
return RS.INSTANCE.config.wirelessTransmitterBaseRange + (upgrades.getUpgradeCount(ItemUpgrade.Type.RANGE) * RS.INSTANCE.config.wirelessTransmitterRangePerUpgrade);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -1,17 +1,19 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.item;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidatorBasic;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidatorUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ItemHandlerUpgrade extends ItemHandlerBase {
|
||||
public ItemHandlerUpgrade(int size, @Nullable Consumer<Integer> listener, ItemUpgrade... supportedUpgrades) {
|
||||
public ItemHandlerUpgrade(int size, @Nullable Consumer<Integer> listener, ItemUpgrade.Type... supportedUpgrades) {
|
||||
super(size, listener, new ItemValidatorBasic[supportedUpgrades.length]);
|
||||
|
||||
for (int i = 0; i < supportedUpgrades.length; ++i) {
|
||||
this.validators[i] = new ItemValidatorBasic(supportedUpgrades[i]);
|
||||
this.validators[i] = new ItemValidatorUpgrade(supportedUpgrades[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +23,9 @@ public class ItemHandlerUpgrade extends ItemHandlerBase {
|
||||
|
||||
public int getSpeed(int speed, int speedIncrease) {
|
||||
for (int i = 0; i < getSlots(); ++i) {
|
||||
/*TODO if (!getStackInSlot(i).isEmpty() && getStackInSlot(i).getItemDamage() == ItemUpgrade.TYPE_SPEED) {*/
|
||||
if (false) {
|
||||
ItemStack slot = getStackInSlot(i);
|
||||
|
||||
if (slot.getItem() instanceof ItemUpgrade && ((ItemUpgrade) slot.getItem()).getType() == ItemUpgrade.Type.SPEED) {
|
||||
speed -= speedIncrease;
|
||||
}
|
||||
}
|
||||
@@ -30,16 +33,25 @@ public class ItemHandlerUpgrade extends ItemHandlerBase {
|
||||
return speed;
|
||||
}
|
||||
|
||||
public boolean hasUpgrade(int type) {
|
||||
return getUpgradeCount(type) > 0;
|
||||
public boolean hasUpgrade(ItemUpgrade.Type type) {
|
||||
for (int i = 0; i < getSlots(); ++i) {
|
||||
ItemStack slot = getStackInSlot(i);
|
||||
|
||||
if (slot.getItem() instanceof ItemUpgrade && ((ItemUpgrade) slot.getItem()).getType() == type) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getUpgradeCount(int type) {
|
||||
public int getUpgradeCount(ItemUpgrade.Type type) {
|
||||
int upgrades = 0;
|
||||
|
||||
for (int i = 0; i < getSlots(); ++i) {
|
||||
/*TODO if (!getStackInSlot(i).isEmpty() && getStackInSlot(i).getItemDamage() == type) {*/
|
||||
if (false) {
|
||||
ItemStack slot = getStackInSlot(i);
|
||||
|
||||
if (slot.getItem() instanceof ItemUpgrade && ((ItemUpgrade) slot.getItem()).getType() == type) {
|
||||
upgrades++;
|
||||
}
|
||||
}
|
||||
@@ -51,7 +63,11 @@ public class ItemHandlerUpgrade extends ItemHandlerBase {
|
||||
int usage = 0;
|
||||
|
||||
for (int i = 0; i < getSlots(); ++i) {
|
||||
// TODO usage += ItemUpgrade.getEnergyUsage(getStackInSlot(i));
|
||||
ItemStack slot = getStackInSlot(i);
|
||||
|
||||
if (slot.getItem() instanceof ItemUpgrade) {
|
||||
usage += ((ItemUpgrade) slot.getItem()).getType().getEnergyUsage();
|
||||
}
|
||||
}
|
||||
|
||||
return usage;
|
||||
@@ -61,9 +77,10 @@ public class ItemHandlerUpgrade extends ItemHandlerBase {
|
||||
int maxFortune = 0;
|
||||
|
||||
for (int i = 0; i < getSlots(); ++i) {
|
||||
if (!getStackInSlot(i).isEmpty()) {
|
||||
// TODO int fortune = ItemUpgrade.getFortuneLevel(getStackInSlot(i));
|
||||
int fortune = 0;
|
||||
ItemStack slot = getStackInSlot(i);
|
||||
|
||||
if (slot.getItem() instanceof ItemUpgrade) {
|
||||
int fortune = ((ItemUpgrade) slot.getItem()).getType().getFortuneLevel();
|
||||
|
||||
if (fortune > maxFortune) {
|
||||
maxFortune = fortune;
|
||||
@@ -75,7 +92,7 @@ public class ItemHandlerUpgrade extends ItemHandlerBase {
|
||||
}
|
||||
|
||||
public int getItemInteractCount() {
|
||||
return hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
||||
return hasUpgrade(ItemUpgrade.Type.STACK) ? 64 : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -0,0 +1,19 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.item.validator;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ItemValidatorUpgrade implements Predicate<ItemStack> {
|
||||
private ItemUpgrade.Type type;
|
||||
|
||||
public ItemValidatorUpgrade(ItemUpgrade.Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(ItemStack stack) {
|
||||
return stack.getItem() instanceof ItemUpgrade && ((ItemUpgrade) stack.getItem()).getType() == type;
|
||||
}
|
||||
}
|
@@ -1,108 +1,112 @@
|
||||
package com.raoulvdberge.refinedstorage.item;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.item.info.ItemInfo;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.Style;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemUpgrade extends ItemBase {
|
||||
public static final int TYPE_RANGE = 1;
|
||||
public static final int TYPE_SPEED = 2;
|
||||
public static final int TYPE_CRAFTING = 3;
|
||||
public static final int TYPE_STACK = 4;
|
||||
public static final int TYPE_SILK_TOUCH = 6;
|
||||
public static final int TYPE_FORTUNE_1 = 7;
|
||||
public static final int TYPE_FORTUNE_2 = 8;
|
||||
public static final int TYPE_FORTUNE_3 = 9;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
public ItemUpgrade() {
|
||||
super(new ItemInfo(RS.ID, "upgrade"));
|
||||
public class ItemUpgrade extends Item {
|
||||
public enum Type {
|
||||
NORMAL("normal"),
|
||||
SPEED("speed"),
|
||||
RANGE("range"),
|
||||
CRAFTING("crafting"),
|
||||
STACK("stack"),
|
||||
SILK_TOUCH("silk_touch"),
|
||||
FORTUNE_1("fortune_1"),
|
||||
FORTUNE_2("fortune_2"),
|
||||
FORTUNE_3("fortune_3");
|
||||
|
||||
//setHasSubtypes(true);
|
||||
//setMaxDamage(0);
|
||||
private final String name;
|
||||
|
||||
Type(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getEnergyUsage() {
|
||||
switch (this) {
|
||||
case NORMAL:
|
||||
return 0;
|
||||
case RANGE:
|
||||
return RS.INSTANCE.config.rangeUpgradeUsage;
|
||||
case SPEED:
|
||||
return RS.INSTANCE.config.speedUpgradeUsage;
|
||||
case CRAFTING:
|
||||
return RS.INSTANCE.config.craftingUpgradeUsage;
|
||||
case STACK:
|
||||
return RS.INSTANCE.config.stackUpgradeUsage;
|
||||
case SILK_TOUCH:
|
||||
return RS.INSTANCE.config.silkTouchUpgradeUsage;
|
||||
case FORTUNE_1:
|
||||
return RS.INSTANCE.config.fortune1UpgradeUsagePerFortune;
|
||||
case FORTUNE_2:
|
||||
return RS.INSTANCE.config.fortune2UpgradeUsagePerFortune;
|
||||
case FORTUNE_3:
|
||||
return RS.INSTANCE.config.fortune3UpgradeUsagePerFortune;
|
||||
default:
|
||||
throw new IllegalStateException("What even am I?");
|
||||
}
|
||||
}
|
||||
|
||||
public int getFortuneLevel() {
|
||||
switch (this) {
|
||||
case FORTUNE_1:
|
||||
return 1;
|
||||
case FORTUNE_2:
|
||||
return 2;
|
||||
case FORTUNE_3:
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* TODO
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerModels(IModelRegistration modelRegistration) {
|
||||
modelRegistration.setModelVariants(
|
||||
this,
|
||||
new ResourceLocation(RS.ID, "upgrade"),
|
||||
new ResourceLocation(RS.ID, "range_upgrade"),
|
||||
new ResourceLocation(RS.ID, "speed_upgrade"),
|
||||
new ResourceLocation(RS.ID, "stack_upgrade"),
|
||||
new ResourceLocation(RS.ID, "silk_touch_upgrade"),
|
||||
new ResourceLocation(RS.ID, "fortune_upgrade")
|
||||
);
|
||||
|
||||
modelRegistration.setModel(this, 0, new ModelResourceLocation(RS.ID + ":upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_RANGE, new ModelResourceLocation(RS.ID + ":range_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_SPEED, new ModelResourceLocation(RS.ID + ":speed_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_CRAFTING, new ModelResourceLocation(RS.ID + ":crafting_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_STACK, new ModelResourceLocation(RS.ID + ":stack_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_SILK_TOUCH, new ModelResourceLocation(RS.ID + ":silk_touch_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_FORTUNE_1, new ModelResourceLocation(RS.ID + ":fortune_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_FORTUNE_2, new ModelResourceLocation(RS.ID + ":fortune_upgrade", "inventory"));
|
||||
modelRegistration.setModel(this, TYPE_FORTUNE_3, new ModelResourceLocation(RS.ID + ":fortune_upgrade", "inventory"));
|
||||
private final Type type;
|
||||
|
||||
public ItemUpgrade(Type type) {
|
||||
super(new Item.Properties().group(RS.MAIN_GROUP));
|
||||
|
||||
this.type = type;
|
||||
|
||||
this.setRegistryName(RS.ID, type == Type.NORMAL ? "upgrade" : type.getName() + "_upgrade");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag) {
|
||||
super.addInformation(stack, world, tooltip, flag);
|
||||
|
||||
if (type.getFortuneLevel() > 0) {
|
||||
tooltip.add(
|
||||
new TranslationTextComponent("enchantment.minecraft.fortune")
|
||||
.appendText(" ")
|
||||
.appendSibling(new TranslationTextComponent("enchantment.level." + type.getFortuneLevel()))
|
||||
.setStyle(new Style().setColor(TextFormatting.GRAY))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEffect(ItemStack stack) {
|
||||
return stack.getMetadata() == TYPE_SILK_TOUCH || getFortuneLevel(stack) > 0;
|
||||
return type == Type.SILK_TOUCH ||
|
||||
type == Type.FORTUNE_1 ||
|
||||
type == Type.FORTUNE_2 ||
|
||||
type == Type.FORTUNE_3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag) {
|
||||
super.addInformation(stack, world, tooltip, flag);
|
||||
|
||||
if (getFortuneLevel(stack) > 0) {
|
||||
tooltip.add(I18n.format("enchantment.lootBonusDigger") + " " + I18n.format("enchantment.level." + getFortuneLevel(stack)));
|
||||
}
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
|
||||
if (!isInCreativeTab(tab)) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i <= 9; ++i) {
|
||||
if (i != 5) { // Removal of interdimensional upgrade
|
||||
items.add(new ItemStack(this, 1, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static int getFortuneLevel(@Nullable ItemStack stack) {
|
||||
if (stack != null) {
|
||||
if (stack.getMetadata() == TYPE_FORTUNE_1) {
|
||||
return 1;
|
||||
} else if (stack.getMetadata() == TYPE_FORTUNE_2) {
|
||||
return 2;
|
||||
} else if (stack.getMetadata() == TYPE_FORTUNE_3) {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static int getEnergyUsage(ItemStack stack) {
|
||||
switch (stack.getItemDamage()) {
|
||||
case TYPE_RANGE:
|
||||
return RS.INSTANCE.config.rangeUpgradeUsage;
|
||||
case TYPE_SPEED:
|
||||
return RS.INSTANCE.config.speedUpgradeUsage;
|
||||
case TYPE_CRAFTING:
|
||||
return RS.INSTANCE.config.craftingUpgradeUsage;
|
||||
case TYPE_STACK:
|
||||
return RS.INSTANCE.config.stackUpgradeUsage;
|
||||
case TYPE_SILK_TOUCH:
|
||||
return RS.INSTANCE.config.silkTouchUpgradeUsage;
|
||||
case TYPE_FORTUNE_1:
|
||||
case TYPE_FORTUNE_2:
|
||||
case TYPE_FORTUNE_3:
|
||||
return RS.INSTANCE.config.fortuneUpgradeUsagePerFortune * getFortuneLevel(stack);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
@@ -90,10 +90,6 @@ public class ProxyCommon {
|
||||
public void registerRecipes(RegistryEvent.Register<IRecipe> e) {
|
||||
e.getRegistry().register(new RecipeCover().setRegistryName(new ResourceLocation(RS.ID, "cover")));
|
||||
e.getRegistry().register(new RecipeHollowCover().setRegistryName(new ResourceLocation(RS.ID, "hollow_cover")));
|
||||
e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("fortune", 1, ItemUpgrade.TYPE_FORTUNE_1).setRegistryName(new ResourceLocation(RS.ID, "fortune_1_upgrade")));
|
||||
e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("fortune", 2, ItemUpgrade.TYPE_FORTUNE_2).setRegistryName(new ResourceLocation(RS.ID, "fortune_2_upgrade")));
|
||||
e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("fortune", 3, ItemUpgrade.TYPE_FORTUNE_3).setRegistryName(new ResourceLocation(RS.ID, "fortune_3_upgrade")));
|
||||
e.getRegistry().register(new RecipeUpgradeWithEnchantedBook("silk_touch", 1, ItemUpgrade.TYPE_SILK_TOUCH).setRegistryName(new ResourceLocation(RS.ID, "silk_touch_upgrade")));
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
@@ -1,36 +1,29 @@
|
||||
package com.raoulvdberge.refinedstorage.recipe;
|
||||
/*
|
||||
|
||||
TODO
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentData;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.inventory.InventoryCrafting;
|
||||
import net.minecraft.inventory.CraftingInventory;
|
||||
import net.minecraft.item.EnchantedBookItem;
|
||||
import net.minecraft.item.ItemEnchantedBook;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.Ingredient;
|
||||
import net.minecraft.item.crafting.ShapedRecipe;
|
||||
import net.minecraft.item.crafting.ShapedRecipes;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.ListNBT;
|
||||
import net.minecraft.util.NonNullList;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
// MC JSON recipes don't like comparing to NBT, that's why we need a custom recipe class.
|
||||
// We need to compare to NBT for the enchanted book.
|
||||
public class RecipeUpgradeWithEnchantedBook extends ShapedRecipe {
|
||||
public class UpgradeWithEnchantedBookRecipe extends ShapedRecipe {
|
||||
private EnchantmentData enchant;
|
||||
private ItemStack result;
|
||||
|
||||
public RecipeUpgradeWithEnchantedBook(String enchantmentId, int enchantmentLevel, int upgradeId) {
|
||||
super(RS.ID, 3, 3, NonNullList.from(Ingredient.EMPTY,
|
||||
public UpgradeWithEnchantedBookRecipe(ResourceLocation recipeId, Enchantment enchantment, int enchantmentLevel, ItemStack result) {
|
||||
super(recipeId, "", 3, 3, NonNullList.from(Ingredient.EMPTY,
|
||||
Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)),
|
||||
Ingredient.fromStacks(EnchantedBookItem.getEnchantedItemStack(new EnchantmentData(Registry.ENCHANTMENT.getOrDefault(new ResourceLocation("minecraft", enchantmentId)), enchantmentLevel))),
|
||||
Ingredient.fromStacks(EnchantedBookItem.getEnchantedItemStack(new EnchantmentData(enchantment, enchantmentLevel))),
|
||||
Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)),
|
||||
Ingredient.fromStacks(new ItemStack(Blocks.BOOKSHELF)),
|
||||
Ingredient.fromStacks(new ItemStack(RSItems.UPGRADE)),
|
||||
@@ -38,21 +31,30 @@ public class RecipeUpgradeWithEnchantedBook extends ShapedRecipe {
|
||||
Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)),
|
||||
Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON)),
|
||||
Ingredient.fromStacks(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON))
|
||||
), new ItemStack(RSItems.UPGRADE, 1));
|
||||
), result);
|
||||
|
||||
this.enchant = new EnchantmentData(Enchantment.getEnchantmentByLocation(enchantmentId), enchantmentLevel);
|
||||
this.enchant = new EnchantmentData(enchantment, enchantmentLevel);
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public EnchantmentData getEnchant() {
|
||||
return enchant;
|
||||
}
|
||||
|
||||
public ItemStack getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(InventoryCrafting inv, World world) {
|
||||
public boolean matches(CraftingInventory inv, World world) {
|
||||
if (super.matches(inv, world)) {
|
||||
ListNBT enchantments = ItemEnchantedBook.getEnchantments(inv.getStackInSlot(1));
|
||||
ListNBT enchantments = EnchantedBookItem.getEnchantments(inv.getStackInSlot(1));
|
||||
|
||||
for (int i = 0; i < enchantments.size(); ++i) {
|
||||
CompoundNBT enchantmentNbt = enchantments.getCompound(i);
|
||||
|
||||
// @Volatile: NBT tags from ItemEnchantedBook
|
||||
if (Enchantment.getEnchantmentByID(enchantmentNbt.getShort("id")) == enchant.enchantment && enchantmentNbt.getShort("lvl") == enchant.enchantmentLevel) {
|
||||
if (ForgeRegistries.ENCHANTMENTS.getValue(new ResourceLocation(enchantmentNbt.getString("id"))) == enchant.enchantment && enchantmentNbt.getShort("lvl") == enchant.enchantmentLevel) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -61,4 +63,3 @@ public class RecipeUpgradeWithEnchantedBook extends ShapedRecipe {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
*/
|
@@ -0,0 +1,41 @@
|
||||
package com.raoulvdberge.refinedstorage.recipe;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.mojang.realmsclient.util.JsonUtils;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.registries.ForgeRegistryEntry;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class UpgradeWithEnchantedBookRecipeSerializer extends ForgeRegistryEntry<IRecipeSerializer<?>> implements IRecipeSerializer<UpgradeWithEnchantedBookRecipe> {
|
||||
@Override
|
||||
public UpgradeWithEnchantedBookRecipe read(ResourceLocation recipeId, JsonObject json) {
|
||||
ItemStack result = new ItemStack(ForgeRegistries.ITEMS.getValue(new ResourceLocation(json.getAsJsonPrimitive("result").getAsString())));
|
||||
Enchantment enchantment = ForgeRegistries.ENCHANTMENTS.getValue(new ResourceLocation(json.getAsJsonObject("enchantment").getAsJsonPrimitive("id").getAsString()));
|
||||
int level = JsonUtils.func_225172_a("level", json.getAsJsonObject("enchantment"), 1);
|
||||
|
||||
return new UpgradeWithEnchantedBookRecipe(recipeId, enchantment, level, result);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public UpgradeWithEnchantedBookRecipe read(ResourceLocation recipeId, PacketBuffer buffer) {
|
||||
ItemStack result = buffer.readItemStack();
|
||||
Enchantment enchantment = ForgeRegistries.ENCHANTMENTS.getValue(buffer.readResourceLocation());
|
||||
int level = buffer.readInt();
|
||||
|
||||
return new UpgradeWithEnchantedBookRecipe(recipeId, enchantment, level, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer, UpgradeWithEnchantedBookRecipe recipe) {
|
||||
buffer.writeItemStack(recipe.getResult());
|
||||
buffer.writeResourceLocation(recipe.getEnchant().enchantment.getRegistryName());
|
||||
buffer.writeInt(recipe.getEnchant().enchantmentLevel);
|
||||
}
|
||||
}
|
@@ -256,15 +256,15 @@
|
||||
"item.refinedstorage.1024k_fluid_storage_part": "1024k Fluid Storage Part",
|
||||
"item.refinedstorage.4096k_fluid_storage_part": "4096k Fluid Storage Part",
|
||||
"item.refinedstorage:pattern": "Pattern",
|
||||
"item.refinedstorage:upgrade.0": "Upgrade",
|
||||
"item.refinedstorage:upgrade.1": "Range Upgrade",
|
||||
"item.refinedstorage:upgrade.2": "Speed Upgrade",
|
||||
"item.refinedstorage:upgrade.3": "Crafting Upgrade",
|
||||
"item.refinedstorage:upgrade.4": "Stack Upgrade",
|
||||
"item.refinedstorage:upgrade.6": "Silk Touch Upgrade",
|
||||
"item.refinedstorage:upgrade.7": "Fortune Upgrade",
|
||||
"item.refinedstorage:upgrade.8": "Fortune Upgrade",
|
||||
"item.refinedstorage:upgrade.9": "Fortune Upgrade",
|
||||
"item.refinedstorage.upgrade": "Upgrade",
|
||||
"item.refinedstorage.range_upgrade": "Range Upgrade",
|
||||
"item.refinedstorage.speed_upgrade": "Speed Upgrade",
|
||||
"item.refinedstorage.crafting_upgrade": "Crafting Upgrade",
|
||||
"item.refinedstorage.stack_upgrade": "Stack Upgrade",
|
||||
"item.refinedstorage.silk_touch_upgrade": "Silk Touch Upgrade",
|
||||
"item.refinedstorage.fortune_1_upgrade": "Fortune Upgrade",
|
||||
"item.refinedstorage.fortune_2_upgrade": "Fortune Upgrade",
|
||||
"item.refinedstorage.fortune_3_upgrade": "Fortune Upgrade",
|
||||
"item.refinedstorage.storage_housing": "Storage Housing",
|
||||
"item.refinedstorage:filter": "Filter",
|
||||
"item.refinedstorage.network_card": "Network Card",
|
||||
|
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "refinedstorage:items/fortune_upgrade"
|
||||
}
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "refinedstorage:items/fortune_upgrade"
|
||||
}
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"type": "forge:ore_shaped",
|
||||
"pattern": [
|
||||
"EOE",
|
||||
"CUC",
|
||||
"EEE"
|
||||
],
|
||||
"key": {
|
||||
"E": {
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"C": {
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "workbench"
|
||||
},
|
||||
"O": {
|
||||
"item": "#construction_core"
|
||||
},
|
||||
"U": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 3
|
||||
}
|
||||
}
|
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"type": "forge:ore_shaped",
|
||||
"pattern": [
|
||||
"EPE",
|
||||
"PUP",
|
||||
"EEE"
|
||||
],
|
||||
"key": {
|
||||
"E": {
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"P": {
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "enderpearl"
|
||||
},
|
||||
"U": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 1
|
||||
}
|
||||
}
|
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"EOE",
|
||||
"CUC",
|
||||
"EEE"
|
||||
],
|
||||
"key": {
|
||||
"E": {
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"C": {
|
||||
"tag": "refinedstorage:crafting_tables"
|
||||
},
|
||||
"O": {
|
||||
"item": "refinedstorage:construction_core"
|
||||
},
|
||||
"U": {
|
||||
"item": "refinedstorage:upgrade"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:crafting_upgrade"
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"type": "refinedstorage:upgrade_with_enchanted_book",
|
||||
"enchantment": {
|
||||
"level": 1,
|
||||
"id": "minecraft:fortune"
|
||||
},
|
||||
"result": "refinedstorage:fortune_1_upgrade"
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"type": "refinedstorage:upgrade_with_enchanted_book",
|
||||
"enchantment": {
|
||||
"level": 2,
|
||||
"id": "minecraft:fortune"
|
||||
},
|
||||
"result": "refinedstorage:fortune_2_upgrade"
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"type": "refinedstorage:upgrade_with_enchanted_book",
|
||||
"enchantment": {
|
||||
"level": 3,
|
||||
"id": "minecraft:fortune"
|
||||
},
|
||||
"result": "refinedstorage:fortune_3_upgrade"
|
||||
}
|
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"EPE",
|
||||
"PUP",
|
||||
"EEE"
|
||||
],
|
||||
"key": {
|
||||
"E": {
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"P": {
|
||||
"tag": "forge:ender_pearls"
|
||||
},
|
||||
"U": {
|
||||
"item": "refinedstorage:upgrade"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:range_upgrade"
|
||||
}
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"type": "refinedstorage:upgrade_with_enchanted_book",
|
||||
"enchantment": {
|
||||
"id": "minecraft:silk_touch"
|
||||
},
|
||||
"result": "refinedstorage:silk_touch_upgrade"
|
||||
}
|
@@ -13,12 +13,10 @@
|
||||
"item": "minecraft:sugar"
|
||||
},
|
||||
"U": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 0
|
||||
"item": "refinedstorage:upgrade"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 2
|
||||
"item": "refinedstorage:speed_upgrade"
|
||||
}
|
||||
}
|
@@ -10,12 +10,10 @@
|
||||
"item": "minecraft:sugar"
|
||||
},
|
||||
"S": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 2
|
||||
"item": "refinedstorage:speed_upgrade"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 4
|
||||
"item": "refinedstorage:stack_upgrade"
|
||||
}
|
||||
}
|
@@ -10,15 +10,13 @@
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"G": {
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "blockGlass"
|
||||
"tag": "forge:glass"
|
||||
},
|
||||
"P": {
|
||||
"item": "#improved_processor"
|
||||
"item": "refinedstorage:improved_processor"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "refinedstorage:upgrade",
|
||||
"data": 0
|
||||
"item": "refinedstorage:upgrade"
|
||||
}
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:crafting_table"
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user