use of com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding in project minecolonies by Minecolonies.
the class AbstractItemScroll method useOn.
@Override
@NotNull
public ActionResultType useOn(ItemUseContext ctx) {
// Right click on block
if (ctx.getLevel().isClientSide || !ctx.getPlayer().isShiftKeyDown() || !needsColony()) {
return ActionResultType.PASS;
}
final TileEntity te = ctx.getLevel().getBlockEntity(ctx.getClickedPos());
final ItemStack scroll = ctx.getPlayer().getItemInHand(ctx.getHand());
final CompoundNBT compound = checkForCompound(scroll);
if (te instanceof TileEntityColonyBuilding) {
compound.putInt(TAG_COLONY_ID, ((AbstractTileEntityColonyBuilding) te).getColonyId());
compound.putString(TAG_COLONY_DIM, ((AbstractTileEntityColonyBuilding) te).getColony().getWorld().dimension().location().toString());
BlockPosUtil.write(compound, TAG_BUILDING_POS, ctx.getClickedPos());
LanguageHandler.sendPlayerMessage(ctx.getPlayer(), "minecolonies.scroll.registered", ((AbstractTileEntityColonyBuilding) te).getColony().getName());
}
return ActionResultType.SUCCESS;
}
use of com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding in project minecolonies by Minecolonies.
the class ItemClipboard method useOn.
@Override
@NotNull
public ActionResultType useOn(final ItemUseContext ctx) {
final ItemStack clipboard = ctx.getPlayer().getItemInHand(ctx.getHand());
final CompoundNBT compound = checkForCompound(clipboard);
final TileEntity entity = ctx.getLevel().getBlockEntity(ctx.getClickedPos());
if (entity instanceof TileEntityColonyBuilding) {
compound.putInt(TAG_COLONY, ((AbstractTileEntityColonyBuilding) entity).getColonyId());
if (!ctx.getLevel().isClientSide) {
LanguageHandler.sendPlayerMessage(ctx.getPlayer(), TranslationConstants.COM_MINECOLONIES_CLIPBOARD_COLONY_SET, ((AbstractTileEntityColonyBuilding) entity).getColony().getName());
}
} else if (ctx.getLevel().isClientSide) {
openWindow(compound, ctx.getLevel(), ctx.getPlayer());
}
return ActionResultType.SUCCESS;
}
use of com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding in project minecolonies by Minecolonies.
the class AbstractBuilding method onDestroyed.
@Override
public void onDestroyed() {
final AbstractTileEntityColonyBuilding tileEntityNew = this.getTileEntity();
final World world = colony.getWorld();
final Block block = world.getBlockState(this.getPosition()).getBlock();
if (tileEntityNew != null) {
InventoryUtils.dropItemHandler(tileEntityNew.getInventory(), world, tileEntityNew.getPosition().getX(), tileEntityNew.getPosition().getY(), tileEntityNew.getPosition().getZ());
world.updateNeighbourForOutputSignal(this.getPosition(), block);
}
ChunkDataHelper.claimColonyChunks(colony, false, this.getID(), getClaimRadius(getBuildingLevel()));
ConstructionTapeHelper.removeConstructionTape(getCorners(), world);
getModules(IBuildingEventsModule.class).forEach(IBuildingEventsModule::onDestroyed);
}
use of com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding in project minecolonies by Minecolonies.
the class AbstractBuilding method getTileEntity.
@Override
public AbstractTileEntityColonyBuilding getTileEntity() {
if (tileEntity != null && tileEntity.isRemoved()) {
tileEntity = null;
}
if ((tileEntity == null) && colony != null && colony.getWorld() != null && getPosition() != null && WorldUtil.isBlockLoaded(colony.getWorld(), getPosition()) && !(colony.getWorld().getBlockState(getPosition()).getBlock() instanceof AirBlock) && colony.getWorld().getBlockState(this.getPosition()).getBlock() instanceof AbstractBlockHut) {
final TileEntity te = colony.getWorld().getBlockEntity(getPosition());
if (te instanceof TileEntityColonyBuilding) {
tileEntity = (TileEntityColonyBuilding) te;
if (tileEntity.getBuilding() == null) {
tileEntity.setColony(colony);
tileEntity.setBuilding(this);
}
} else {
Log.getLogger().error("Somehow the wrong TileEntity is at the location where the building should be!", new Exception());
Log.getLogger().error("Trying to restore order!");
final AbstractTileEntityColonyBuilding tileEntityColonyBuilding = new TileEntityColonyBuilding(MinecoloniesTileEntities.BUILDING);
colony.getWorld().setBlockEntity(getPosition(), tileEntityColonyBuilding);
this.tileEntity = tileEntityColonyBuilding;
}
}
return tileEntity;
}
use of com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding in project minecolonies by Minecolonies.
the class CreateColonyMessage method onExecute.
@Override
public void onExecute(final NetworkEvent.Context ctxIn, final boolean isLogicalServer) {
final ServerPlayerEntity sender = ctxIn.getSender();
final World world = ctxIn.getSender().level;
if (sender == null) {
return;
}
if (sender.getStats().getValue(Stats.ITEM_USED.get(ModItems.supplyChest)) <= 0 && !sender.isCreative()) {
LanguageHandler.sendPlayerMessage(sender, "com.minecolonies.coremod.supplyneed");
return;
}
final IColony colony = IColonyManager.getInstance().getClosestColony(world, townHall);
String style = Constants.DEFAULT_STYLE;
final TileEntity tileEntity = world.getBlockEntity(townHall);
if (!(tileEntity instanceof TileEntityColonyBuilding)) {
LanguageHandler.sendPlayerMessage(sender, "com.minecolonies.coremod.gui.colony.create.notileentity");
return;
}
if (!((AbstractTileEntityColonyBuilding) tileEntity).getStyle().isEmpty()) {
style = ((AbstractTileEntityColonyBuilding) tileEntity).getStyle();
}
if (MineColonies.getConfig().getServer().restrictColonyPlacement.get()) {
final double spawnDistance = Math.sqrt(BlockPosUtil.getDistanceSquared2D(townHall, ((ServerWorld) world).getSharedSpawnPos()));
if (spawnDistance < MineColonies.getConfig().getServer().minDistanceFromWorldSpawn.get()) {
if (!world.isClientSide) {
LanguageHandler.sendPlayerMessage(sender, CANT_PLACE_COLONY_TOO_CLOSE_TO_SPAWN, MineColonies.getConfig().getServer().minDistanceFromWorldSpawn.get());
}
return;
} else if (spawnDistance > MineColonies.getConfig().getServer().maxDistanceFromWorldSpawn.get()) {
if (!world.isClientSide) {
LanguageHandler.sendPlayerMessage(sender, CANT_PLACE_COLONY_TOO_FAR_FROM_SPAWN, MineColonies.getConfig().getServer().maxDistanceFromWorldSpawn.get());
}
return;
}
}
if (colony != null && !IColonyManager.getInstance().isFarEnoughFromColonies(world, townHall)) {
LanguageHandler.sendPlayerMessage(sender, "com.minecolonies.coremod.gui.colony.denied.tooclose", colony.getName());
return;
}
final IColony ownedColony = IColonyManager.getInstance().getIColonyByOwner(world, sender);
if (ownedColony == null) {
IColonyManager.getInstance().createColony(world, townHall, sender, style);
IColonyManager.getInstance().getIColonyByOwner(world, sender).getBuildingManager().addNewBuilding((TileEntityColonyBuilding) tileEntity, world);
LanguageHandler.sendPlayerMessage((PlayerEntity) sender, "com.minecolonies.coremod.progress.colony_founded");
return;
}
LanguageHandler.sendPlayerMessage((PlayerEntity) sender, "com.minecolonies.coremod.gui.colony.create.failed");
}
Aggregations