Merge branch 'master' into 1.10

This commit is contained in:
Tschipp 2018-05-11 20:22:10 +02:00
commit ed4449aa45
5 changed files with 157 additions and 5 deletions

View File

@ -34,7 +34,7 @@ public class CarryOn {
public static CarryOn instance;
public static final String MODID = "carryon";
public static final String VERSION = "1.8";
public static final String VERSION = "1.9";
public static final String NAME = "Carry On";
public static final String ACCEPTED_VERSIONS = "[1.10,1.11)";
public static final String UPDATE_JSON = "https://gist.githubusercontent.com/Tschipp/dccadee7c90d7a34e6e76a35d9d6fa2e/raw/";

View File

@ -63,6 +63,16 @@ public class Configs {
@Comment("Use custom Pickup Scripts. Having this set to false, will not allow you to run scripts, but will save you some performance")
public boolean useScripts=false;
@Comment("Allows entities to be stacked using Carry On")
public boolean stackableEntities = true;
@Config.RangeInt(min = 1)
@Comment("Maximum stack limit for entities")
public int maxEntityStackLimit = 10;
@Comment("Whether entities' size matters when stacking or not")
public boolean entitySizeMattersStacking = true;
}
public static class WhiteList
@ -94,6 +104,8 @@ public class Configs {
"minecraft:jungle_door",
"minecraft:acacia_door",
"minecraft:dark_oak_door",
"minecraft:waterlily",
"minecraft:cake",
"animania:block_trough",
"animania:block_invisiblock",
"colossalchests:*",
@ -103,6 +115,7 @@ public class Configs {
"tconstruct:*",
"rustic:*",
"botania:*",
"astralsorcery:*",
"quark:colored_bed_*",
"immersiveengineering:*",
"embers:block_furnace",
@ -122,6 +135,7 @@ public class Configs {
"skyresources:*",
"lootbags:*",
"exsartagine:*",
"aquamunda:tank"
};

View File

@ -1,16 +1,24 @@
package tschipp.carryon.common.event;
import java.util.List;
import com.google.common.collect.Lists;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.entity.passive.EntityVillager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
@ -24,6 +32,7 @@ import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import tschipp.carryon.CarryOn;
import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.PickupHandler;
import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.item.ItemEntity;
@ -89,9 +98,9 @@ public class ItemEntityEvents
if (entity.hurtResistantTime == 0)
{
if(entity instanceof EntityAnimal)
if (entity instanceof EntityAnimal)
((EntityAnimal) entity).clearLeashed(true, true);
if (PickupHandler.canPlayerPickUpEntity(player, entity))
{
if (ItemEntity.storeEntityData(entity, world, stack))
@ -119,10 +128,109 @@ public class ItemEntityEvents
}
}
else if (main != null && main.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(main) && !CarryOnKeybinds.isKeyPressed(player) && CarryOnConfig.settings.stackableEntities)
{
Entity entityHeld = ItemEntity.getEntity(main, world);
if (entity.hurtResistantTime == 0 && entityHeld instanceof EntityLivingBase)
{
if (!world.isRemote && entityHeld.getUniqueID() != entity.getUniqueID() && !entityHeld.isDead && !entity.isDead)
{
double sizeHeldEntity = entityHeld.height * entityHeld.width;
double distance = pos.distanceSqToCenter(player.posX, player.posY + 0.5, player.posZ);
Entity lowestEntity = entity.getLowestRidingEntity();
int numPassengers = getAllPassengers(lowestEntity);
if (numPassengers < CarryOnConfig.settings.maxEntityStackLimit - 1)
{
Entity topEntity = getTopPassenger(lowestEntity);
double sizeEntity = topEntity.height * topEntity.width;
if ((CarryOnConfig.settings.entitySizeMattersStacking && sizeHeldEntity <= sizeEntity) || !CarryOnConfig.settings.entitySizeMattersStacking)
{
if (topEntity instanceof EntityHorse)
{
EntityHorse horse = (EntityHorse) topEntity;
horse.setHorseTamed(true);
}
if (distance < 6)
{
double tempX = entity.posX;
double tempY = entity.posY;
double tempZ = entity.posZ;
entityHeld.setPosition(tempX, tempY + 2.6, tempZ);
world.spawnEntityInWorld(entityHeld);
entityHeld.startRiding(topEntity, false);
entityHeld.setPositionAndUpdate(tempX, tempY, tempZ);
}
else
{
entityHeld.setPosition(entity.posX, entity.posY, entity.posZ);
world.spawnEntityInWorld(entityHeld);
entityHeld.startRiding(topEntity, false);
}
ItemEntity.clearEntityData(main);
player.setHeldItem(EnumHand.MAIN_HAND, null);
CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256));
event.setCanceled(true);
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_HORSE_SADDLE, SoundCategory.PLAYERS, 0.5F, 1.5F);
}
else
{
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_NOTE_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
return;
}
}
else
{
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_NOTE_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
return;
}
}
}
}
}
}
public static int getAllPassengers(Entity entity)
{
int passengers = 0;
while (entity.isBeingRidden())
{
List<Entity> pass = entity.getPassengers();
if (!pass.isEmpty())
{
entity = pass.get(0);
passengers++;
}
}
return passengers;
}
public static Entity getTopPassenger(Entity entity)
{
Entity top = entity;
while (entity.isBeingRidden())
{
List<Entity> pass = entity.getPassengers();
if (!pass.isEmpty())
{
entity = pass.get(0);
top = entity;
}
}
return top;
}
@SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent event)
{

View File

@ -33,6 +33,8 @@ import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import tschipp.carryon.CarryOn;
import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.CarryOnConfig;
@ -261,7 +263,7 @@ public class ItemEvents
try
{
CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256));
world.removeTileEntity(pos);
emptyTileEntity(te);
world.setBlockToAir(pos);
player.setHeldItem(EnumHand.MAIN_HAND, stack);
event.setUseBlock(Result.DENY);
@ -269,6 +271,7 @@ public class ItemEvents
}
catch (Exception e)
{
e.printStackTrace();
CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256));
world.setBlockState(pos, statee);
if (!tag.hasNoTags())
@ -287,6 +290,33 @@ public class ItemEvents
}
}
}
public static void emptyTileEntity(TileEntity te)
{
if (te != null && !te.isInvalid())
{
for (EnumFacing facing : EnumFacing.VALUES)
{
if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing))
{
IItemHandler itemHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
for (int i = 0; i < itemHandler.getSlots(); i++)
{
itemHandler.extractItem(i, 64, false);
}
}
}
if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null))
{
IItemHandler itemHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
for (int i = 0; i < itemHandler.getSlots(); i++)
{
itemHandler.extractItem(i, 64, false);
}
}
}
}
@SubscribeEvent
public void onRespawn(PlayerEvent.Clone event)

View File

@ -2,7 +2,7 @@
{
"modid" : "carryon",
"name" : "Carry On",
"version" : "1.8", "mcversion" : "1.10.2",
"version" : "1.9", "mcversion" : "1.10.2",
"url" : "",
"credits" : "Tschipp, Purplicious_Cow, cy4n",
"authorList" : ["Tschipp, Purplicious_Cow, cy4n"],