blusunrize.immersiveengineering.api.tool.RailgunHandler.java Source code

Java tutorial

Introduction

Here is the source code for blusunrize.immersiveengineering.api.tool.RailgunHandler.java

Source

/*
 * BluSunrize
 * Copyright (c) 2017
 *
 * This code is licensed under "Blu's License of Common Sense"
 * Details can be found in the license file in the root folder of this project
 */

package blusunrize.immersiveengineering.api.tool;

import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.api.crafting.IngredientStack;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import org.apache.commons.lang3.tuple.Pair;

import java.util.ArrayList;

public class RailgunHandler {
    public static ArrayList<Pair<IngredientStack, RailgunProjectileProperties>> projectilePropertyMap = new ArrayList<>();

    public static RailgunProjectileProperties registerProjectileProperties(IngredientStack stack, double damage,
            double gravity) {
        RailgunProjectileProperties properties = new RailgunProjectileProperties(damage, gravity);
        projectilePropertyMap.add(Pair.of(stack, properties));
        return properties;
    }

    public static RailgunProjectileProperties registerProjectileProperties(ItemStack stack, double damage,
            double gravity) {
        return registerProjectileProperties(ApiUtils.createIngredientStack(stack), damage, gravity);
    }

    public static RailgunProjectileProperties getProjectileProperties(ItemStack stack) {
        for (Pair<IngredientStack, RailgunProjectileProperties> pair : projectilePropertyMap)
            if (pair.getLeft().matchesItemStack(stack))
                return pair.getRight();
        return null;
    }

    public static class RailgunProjectileProperties {
        public double damage;
        public double gravity;
        public int[][] colourMap = { { 0x686868, 0xa4a4a4, 0xa4a4a4, 0xa4a4a4, 0x686868 } };

        public RailgunProjectileProperties(double damage, double gravity) {
            this.damage = damage;
            this.gravity = gravity;
        }

        public RailgunProjectileProperties setColourMap(int[][] map) {
            this.colourMap = map;
            return this;
        }

        /**
         * @return true to cancel normal damage application
         */
        public boolean overrideHitEntity(Entity entityHit, Entity shooter) {
            return false;
        }
    }
}