mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-12-22 19:39:24 +01:00
Added Reconstruction Module as Rarmor integration
This commit is contained in:
parent
1c0fb786b2
commit
f21fa7e317
11 changed files with 175 additions and 34 deletions
|
@ -43,6 +43,7 @@ dependencies {
|
|||
//compile "codechicken:NotEnoughItems:1.8-1.0.5.104:dev"
|
||||
|
||||
deobfCompile "mezz.jei:jei_1.9:3.3.3.197"
|
||||
compile file "lib/Rarmor.jar"
|
||||
}
|
||||
|
||||
processResources {
|
||||
|
|
|
@ -128,9 +128,8 @@ public class ActuallyAdditions{
|
|||
@EventHandler
|
||||
public void missingMapping(FMLMissingMappingsEvent event){
|
||||
for(FMLMissingMappingsEvent.MissingMapping mapping : event.getAll()){
|
||||
//Ignore removal of foreign paxels
|
||||
if(mapping.name != null && mapping.name.toLowerCase(Locale.ROOT).startsWith(ModUtil.MOD_ID+":")){
|
||||
if(mapping.name.contains("paxel") || mapping.name.contains("itemSpecial") || mapping.name.contains("blockBookStand")){
|
||||
if(mapping.name.contains("paxel") || mapping.name.contains("itemSpecial") || mapping.name.contains("blockBookStand") || mapping.name.contains("Rarmor")){
|
||||
mapping.ignore();
|
||||
ModUtil.LOGGER.info("Missing Mapping "+mapping.name+" is getting ignored. This is intentional.");
|
||||
}
|
||||
|
|
|
@ -191,6 +191,7 @@ public class CreativeTab extends CreativeTabs{
|
|||
this.add(InitItems.itemPaxelCrystalBlack);
|
||||
this.add(InitItems.itemPaxelCrystalGreen);
|
||||
this.add(InitItems.itemPaxelCrystalWhite);
|
||||
this.add(InitItems.itemRarmorModuleReconstructor);
|
||||
InitForeignPaxels.addToCreativeTab();
|
||||
|
||||
this.add(InitBlocks.blockCrystal);
|
||||
|
@ -296,10 +297,14 @@ public class CreativeTab extends CreativeTabs{
|
|||
}
|
||||
|
||||
public void add(Item item){
|
||||
item.getSubItems(item, instance, this.list);
|
||||
if(item != null){
|
||||
item.getSubItems(item, instance, this.list);
|
||||
}
|
||||
}
|
||||
|
||||
public void add(Block block){
|
||||
block.getSubBlocks(new ItemStack(block).getItem(), instance, this.list);
|
||||
if(block != null){
|
||||
block.getSubBlocks(new ItemStack(block).getItem(), instance, this.list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ import net.minecraft.item.EnumRarity;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
|
||||
public class InitItems{
|
||||
|
||||
|
@ -205,6 +206,8 @@ public class InitItems{
|
|||
public static Item itemBootsCrystalWhite;
|
||||
public static Item itemPaxelCrystalWhite;
|
||||
|
||||
public static Item itemRarmorModuleReconstructor;
|
||||
|
||||
public static void init(){
|
||||
ModUtil.LOGGER.info("Initializing Items...");
|
||||
|
||||
|
@ -366,5 +369,9 @@ public class InitItems{
|
|||
itemPantsCrystalWhite = new ItemArmorAA("itemPantsCrystalWhite", InitArmorMaterials.armorMaterialCrystalWhite, 2, new ItemStack(InitItems.itemCrystal, 1, TheCrystals.IRON.ordinal()), Util.CRYSTAL_WHITE_RARITY);
|
||||
itemBootsCrystalWhite = new ItemArmorAA("itemBootsCrystalWhite", InitArmorMaterials.armorMaterialCrystalWhite, 3, new ItemStack(InitItems.itemCrystal, 1, TheCrystals.IRON.ordinal()), Util.CRYSTAL_WHITE_RARITY);
|
||||
itemPaxelCrystalWhite = new ItemAllToolAA(InitToolMaterials.toolMaterialCrystalWhite, new ItemStack(InitItems.itemCrystal, 1, TheCrystals.IRON.ordinal()), "itemPaxelCrystalWhite", Util.CRYSTAL_WHITE_RARITY, 14606302);
|
||||
|
||||
if(Loader.isModLoaded("rarmor")){
|
||||
itemRarmorModuleReconstructor = new ItemRarmorModuleReconstructor("itemRarmorModuleReconstructor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
package de.ellpeck.actuallyadditions.mod.items;
|
||||
|
||||
import cofh.api.energy.IEnergyContainerItem;
|
||||
import de.canitzp.rarmor.api.InventoryBase;
|
||||
import de.canitzp.rarmor.api.modules.IRarmorModule;
|
||||
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
|
||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
||||
import de.ellpeck.actuallyadditions.mod.items.lens.Lenses;
|
||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityAtomicReconstructor;
|
||||
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.Optional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Optional.Interface(modid = "rarmor", iface = "de.canitzp.rarmor.api.modules.IRarmorModule")
|
||||
public class ItemRarmorModuleReconstructor extends ItemBase implements IRarmorModule{
|
||||
|
||||
public ItemRarmorModuleReconstructor(String name){
|
||||
super(name);
|
||||
|
||||
this.setMaxStackSize(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueName(){
|
||||
return this.getRegistryName().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumRarity getRarity(ItemStack stack){
|
||||
return EnumRarity.RARE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModuleType getModuleType(){
|
||||
return ModuleType.ACTIVE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getGuiHelp(){
|
||||
List text = new ArrayList<String>();
|
||||
text.add("Read more about this in the");
|
||||
text.add("Actually Additions Manual!");
|
||||
return text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onModuleTickInArmor(World world, EntityPlayer player, ItemStack armorChestplate, ItemStack module, InventoryBase inventory){
|
||||
if(!world.isRemote && player.isSneaking() && player.onGround){
|
||||
if(world.getTotalWorldTime()%50 == 0){
|
||||
RayTraceResult result = WorldUtil.getNearestPositionWithAir(world, player, Lenses.LENS_NONE.getDistance());
|
||||
if(result != null){
|
||||
BlockPos pos = result.getBlockPos();
|
||||
if(pos != null){
|
||||
IAtomicReconstructor fake = this.getFakeReconstructor(world, player, armorChestplate);
|
||||
|
||||
int energyUse = TileEntityAtomicReconstructor.ENERGY_USE*2;
|
||||
if(fake.getEnergy() >= energyUse){
|
||||
Lenses.LENS_NONE.invoke(world.getBlockState(pos), pos, fake);
|
||||
|
||||
EnumFacing hit = result.sideHit;
|
||||
TileEntityAtomicReconstructor.shootLaser(world, player.posX-player.width/2, player.posY+player.getYOffset()+player.getEyeHeight()/2, player.posZ-player.width/2, pos.getX()+hit.getFrontOffsetX(), pos.getY()+hit.getFrontOffsetY(), pos.getZ()+hit.getFrontOffsetZ(), Lenses.LENS_NONE);
|
||||
|
||||
fake.extractEnergy(energyUse);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IAtomicReconstructor getFakeReconstructor(final World world, final EntityPlayer player, final ItemStack armorChestplate){
|
||||
return new IAtomicReconstructor(){
|
||||
@Override
|
||||
public int getX(){
|
||||
return MathHelper.floor_double(player.posX);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getY(){
|
||||
return MathHelper.floor_double(player.posY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getZ(){
|
||||
return MathHelper.floor_double(player.posZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getWorldObject(){
|
||||
return world;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extractEnergy(int amount){
|
||||
Item item = armorChestplate.getItem();
|
||||
if(item instanceof IEnergyContainerItem){
|
||||
((IEnergyContainerItem)item).extractEnergy(armorChestplate, amount, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergy(){
|
||||
Item item = armorChestplate.getItem();
|
||||
if(item instanceof IEnergyContainerItem){
|
||||
return ((IEnergyContainerItem)item).getEnergyStored(armorChestplate);
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -12,11 +12,9 @@ package de.ellpeck.actuallyadditions.mod.items.base;
|
|||
|
||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
||||
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
|
||||
public class ItemBase extends Item{
|
||||
|
|
|
@ -23,12 +23,12 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
|||
|
||||
public class PacketParticle implements IMessage{
|
||||
|
||||
private int startX;
|
||||
private int startY;
|
||||
private int startZ;
|
||||
private int endX;
|
||||
private int endY;
|
||||
private int endZ;
|
||||
private double startX;
|
||||
private double startY;
|
||||
private double startZ;
|
||||
private double endX;
|
||||
private double endY;
|
||||
private double endZ;
|
||||
private float[] color;
|
||||
private int particleAmount;
|
||||
private float particleSize;
|
||||
|
@ -38,7 +38,7 @@ public class PacketParticle implements IMessage{
|
|||
|
||||
}
|
||||
|
||||
public PacketParticle(int startX, int startY, int startZ, int endX, int endY, int endZ, float[] color, int particleAmount, float particleSize){
|
||||
public PacketParticle(double startX, double startY, double startZ, double endX, double endY, double endZ, float[] color, int particleAmount, float particleSize){
|
||||
this.startX = startX;
|
||||
this.startY = startY;
|
||||
this.startZ = startZ;
|
||||
|
@ -51,13 +51,13 @@ public class PacketParticle implements IMessage{
|
|||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static void renderParticlesFromAToB(int startX, int startY, int startZ, int endX, int endY, int endZ, int particleAmount, float particleSize, float[] color, float ageMultiplier){
|
||||
public static void renderParticlesFromAToB(double startX, double startY, double startZ, double endX, double endY, double endZ, int particleAmount, float particleSize, float[] color, float ageMultiplier){
|
||||
World world = Minecraft.getMinecraft().theWorld;
|
||||
|
||||
if(Minecraft.getMinecraft().thePlayer.getDistance(startX, startY, startZ) <= 64 || Minecraft.getMinecraft().thePlayer.getDistance(endX, endY, endZ) <= 64){
|
||||
int difX = startX-endX;
|
||||
int difY = startY-endY;
|
||||
int difZ = startZ-endZ;
|
||||
double difX = startX-endX;
|
||||
double difY = startY-endY;
|
||||
double difZ = startZ-endZ;
|
||||
double distance = new Vec3d(startX, startY, startZ).distanceTo(new Vec3d(endX, endY, endZ));
|
||||
|
||||
for(int times = 0; times < particleAmount/2; times++){
|
||||
|
@ -71,12 +71,12 @@ public class PacketParticle implements IMessage{
|
|||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf){
|
||||
this.startX = buf.readInt();
|
||||
this.startY = buf.readInt();
|
||||
this.startZ = buf.readInt();
|
||||
this.endX = buf.readInt();
|
||||
this.endY = buf.readInt();
|
||||
this.endZ = buf.readInt();
|
||||
this.startX = buf.readDouble();
|
||||
this.startY = buf.readDouble();
|
||||
this.startZ = buf.readDouble();
|
||||
this.endX = buf.readDouble();
|
||||
this.endY = buf.readDouble();
|
||||
this.endZ = buf.readDouble();
|
||||
this.particleAmount = buf.readInt();
|
||||
this.particleSize = buf.readFloat();
|
||||
|
||||
|
@ -88,12 +88,12 @@ public class PacketParticle implements IMessage{
|
|||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf){
|
||||
buf.writeInt(this.startX);
|
||||
buf.writeInt(this.startY);
|
||||
buf.writeInt(this.startZ);
|
||||
buf.writeInt(this.endX);
|
||||
buf.writeInt(this.endY);
|
||||
buf.writeInt(this.endZ);
|
||||
buf.writeDouble(this.startX);
|
||||
buf.writeDouble(this.startY);
|
||||
buf.writeDouble(this.startZ);
|
||||
buf.writeDouble(this.endX);
|
||||
buf.writeDouble(this.endY);
|
||||
buf.writeDouble(this.endZ);
|
||||
buf.writeInt(this.particleAmount);
|
||||
buf.writeFloat(this.particleSize);
|
||||
|
||||
|
|
|
@ -103,11 +103,11 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
|||
BlockPos hitBlock = WorldUtil.getCoordsFromSide(sideToManipulate, this.pos, i);
|
||||
|
||||
if(currentLens.invoke(this.worldObj.getBlockState(hitBlock), hitBlock, this)){
|
||||
this.shootLaser(hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), currentLens);
|
||||
shootLaser(this.worldObj, this.getX(), this.getY(), this.getZ(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), currentLens);
|
||||
break;
|
||||
}
|
||||
else if(i >= distance-1){
|
||||
this.shootLaser(hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), currentLens);
|
||||
shootLaser(this.worldObj, this.getX(), this.getY(), this.getZ(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), currentLens);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -122,11 +122,11 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
|||
return this.counter >= 500 ? Lenses.LENS_DISRUPTION : Lenses.LENS_NONE;
|
||||
}
|
||||
|
||||
private void shootLaser(int endX, int endY, int endZ, Lens currentLens){
|
||||
public static void shootLaser(World world, double startX, double startY, double startZ, double endX, double endY, double endZ, Lens currentLens){
|
||||
if(!ConfigValues.lessSound){
|
||||
this.worldObj.playSound(null, this.getX(), this.getY(), this.getZ(), SoundHandler.reconstructor, SoundCategory.BLOCKS, 0.35F, 1.0F);
|
||||
world.playSound(null, startX, startY, startZ, SoundHandler.reconstructor, SoundCategory.BLOCKS, 0.35F, 1.0F);
|
||||
}
|
||||
PacketHandler.theNetwork.sendToAllAround(new PacketParticle(this.getX(), this.getY(), this.getZ(), endX, endY, endZ, currentLens.getColor(), ConfigValues.lessParticles ? 2 : 8, 2F), new NetworkRegistry.TargetPoint(this.worldObj.provider.getDimension(), this.getX(), this.getY(), this.getZ(), 64));
|
||||
PacketHandler.theNetwork.sendToAllAround(new PacketParticle(startX, startY, startZ, endX, endY, endZ, currentLens.getColor(), ConfigValues.lessParticles ? 2 : 8, 2F), new NetworkRegistry.TargetPoint(world.provider.getDimension(), startX, startY, startZ, 64));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -332,6 +332,7 @@ item.actuallyadditions.itemChestQuartz.name=Black Quartz Chestplate
|
|||
item.actuallyadditions.itemPantsQuartz.name=Black Quartz Pants
|
||||
item.actuallyadditions.itemBootsQuartz.name=Black Quartz Boots
|
||||
item.actuallyadditions.itemBooklet.name=Actually Additions Manual
|
||||
item.actuallyadditions.itemRarmorModuleReconstructor.name=Reconstruction Module
|
||||
item.actuallyadditions.itemLaserWrench.name=Laser Wrench
|
||||
item.actuallyadditions.itemChestToCrateUpgrade.name=Chest To Storage Crate Upgrade
|
||||
item.actuallyadditions.itemMiscDrillCore.name=Drill Core
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "actuallyadditions:item/standardItem",
|
||||
"textures": {
|
||||
"layer0": "actuallyadditions:items/itemRarmorModuleReconstructor"
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 463 B |
Loading…
Reference in a new issue