ModConfig.java
package net.obscuria.core;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.loading.FMLPaths;
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ModConfig
{
public static class ServerConfig
{
public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
public static final ForgeConfigSpec SPEC;
public static final ForgeConfigSpec.DoubleValue northernStarDamage;
static
{
BUILDER.comment("Obscuria's Essentials Config.");
BUILDER.push("General");
northernStarDamage = BUILDER.comment("Northern Star Damage.").worldRestart().defineInRange("Northern Star Damage", 4F, 0F, 1000F);
BUILDER.pop();
SPEC = BUILDER.build();
}
}
public static void setup()
{
Path configPath = FMLPaths.CONFIGDIR.get();
Path bopConfigPath = Paths.get(configPath.toAbsolutePath().toString(), "Obscuria Collection");
// Create the config folder
try
{
Files.createDirectory(bopConfigPath);
}
catch (FileAlreadyExistsException e)
{
// Do nothing
}
catch (IOException e)
{
ObCoreMod.LOGGER.warn("Failed to create Obscuria's Essentials config directory", e);
}
ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, ServerConfig.SPEC, "Obscuria Collection/ob-core.toml");
}
}
BladeOfTheNorthernStarItem.java
package net.obscuria.core.item;
import net.obscuria.core.procedures.BladeOfNorthernStarRightClickedProcedure;
import net.obscuria.core.itemgroup.AaaObGeneralItemGroup;
import net.obscuria.core.ObCoreModElements;
import net.minecraftforge.registries.ObjectHolder;
import net.minecraft.world.World;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.Hand;
import net.minecraft.util.Direction;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.ActionResult;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.item.SwordItem;
import net.minecraft.item.ItemUseContext;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Item;
import net.minecraft.item.IItemTier;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.block.BlockState;
import java.util.stream.Stream;
import java.util.Map;
import java.util.List;
import java.util.HashMap;
import java.util.AbstractMap;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.client.gui.screen.Screen;
import net.obscuria.core.ModConfig;
@ObCoreModElements.ModElement.Tag
public class BladeOfTheNorthernStarItem extends ObCoreModElements.ModElement {
@ObjectHolder("ob_core:blade_of_northern_star")
public static final Item block = null;
public BladeOfTheNorthernStarItem(ObCoreModElements instance) {
super(instance, 24);
}
@Override
public void initElements() {
elements.items.add(() -> new SwordItem(new IItemTier() {
public int getMaxUses() {
return 1600;
}
public float getEfficiency() {
return 8.5f;
}
public float getAttackDamage() {
return ModConfig.ServerConfig.northernStarDamage.get().floatValue();
}
public int getHarvestLevel() {
return 3;
}
public int getEnchantability() {
return 11;
}
public Ingredient getRepairMaterial() {
return Ingredient.fromStacks(new ItemStack(MagicDustItem.block));
}
}, 3, -2.4000000000000001f, new Item.Properties().group(AaaObGeneralItemGroup.tab).isImmuneToFire()) {
@Override
public void addInformation(ItemStack itemstack, World world, List<ITextComponent> list, ITooltipFlag flag) {
super.addInformation(itemstack, world, list, flag);
list.add(new StringTextComponent((new TranslationTextComponent("tooltip.damage").getString() + "7.5 " + new TranslationTextComponent("tooltip.attack_speed").getString() + "0.62s " +
new TranslationTextComponent("tooltip.durability").getString() + ((itemstack).getMaxDamage() - (itemstack).getDamage()) + "/" + (itemstack).getMaxDamage())));
if(Screen.hasShiftDown()) {
list.add(new TranslationTextComponent("tooltip.collapse"));
list.add(new StringTextComponent(new TranslationTextComponent("tooltip.stick").getString() + new TranslationTextComponent("tooltip.northern_star_line1").getString()));
list.add(new StringTextComponent(new TranslationTextComponent("tooltip.stick").getString() + new TranslationTextComponent("tooltip.northern_star_line2").getString()));
} else {
list.add(new TranslationTextComponent("tooltip.expand"));
}
}
@Override
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity entity, Hand hand) {
ActionResult<ItemStack> retval = super.onItemRightClick(world, entity, hand);
ItemStack itemstack = retval.getResult();
double x = entity.getPosX();
double y = entity.getPosY();
double z = entity.getPosZ();
BladeOfNorthernStarRightClickedProcedure.executeProcedure(
Stream.of(new AbstractMap.SimpleEntry<>("entity", entity), new AbstractMap.SimpleEntry<>("itemstack", itemstack))
.collect(HashMap::new, (_m, _e) -> _m.put(_e.getKey(), _e.getValue()), Map::putAll));
return retval;
}
@Override
public ActionResultType onItemUse(ItemUseContext context) {
ActionResultType retval = super.onItemUse(context);
World world = context.getWorld();
BlockPos pos = context.getPos();
PlayerEntity entity = context.getPlayer();
Direction direction = context.getFace();
BlockState blockstate = world.getBlockState(pos);
int x = pos.getX();
int y = pos.getY();
int z = pos.getZ();
ItemStack itemstack = context.getItem();
BladeOfNorthernStarRightClickedProcedure.executeProcedure(
Stream.of(new AbstractMap.SimpleEntry<>("entity", entity), new AbstractMap.SimpleEntry<>("itemstack", itemstack))
.collect(HashMap::new, (_m, _e) -> _m.put(_e.getKey(), _e.getValue()), Map::putAll));
return retval;
}
}.setRegistryName("blade_of_northern_star"));
}
}