mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
fixes, chainsawable leaves
This commit is contained in:
parent
c375ea54bd
commit
af1a5d37ce
@ -15,6 +15,7 @@ public class ContainerLeadBox extends Container {
|
||||
|
||||
public ContainerLeadBox(InventoryPlayer invPlayer, InventoryLeadBox box) {
|
||||
this.box = box;
|
||||
this.box.openInventory();
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
for(int j = 0; j < 5; j++) {
|
||||
@ -73,4 +74,10 @@ public class ContainerLeadBox extends Container {
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return box.isUseableByPlayer(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(EntityPlayer player) {
|
||||
super.onContainerClosed(player);
|
||||
this.box.closeInventory();
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,7 +44,11 @@ public class GUILeadBox extends GuiContainer {
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.inventory.getInventoryName();
|
||||
String name = I18n.format(this.inventory.getInventoryName());
|
||||
|
||||
if(inventory.hasCustomInventoryName()) {
|
||||
name = inventory.box.getDisplayName();
|
||||
}
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
|
||||
@ -4035,7 +4035,7 @@ public class ModItems {
|
||||
scrap = new Item().setUnlocalizedName("scrap").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap");
|
||||
scrap_oil = new Item().setUnlocalizedName("scrap_oil").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_oil");
|
||||
scrap_nuclear = new Item().setUnlocalizedName("scrap_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_nuclear");
|
||||
containment_box = new ItemLeadBox().setUnlocalizedName("containment_box").setCreativeTab(null).setTextureName(RefStrings.MODID + ":containment_box");
|
||||
containment_box = new ItemLeadBox().setUnlocalizedName("containment_box").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":containment_box");
|
||||
|
||||
debris_graphite = new Item().setUnlocalizedName("debris_graphite").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_graphite");
|
||||
debris_metal = new Item().setUnlocalizedName("debris_metal").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_metal");
|
||||
@ -5282,7 +5282,7 @@ public class ModItems {
|
||||
.addBreakAbility(new ToolAbility.SilkAbility())
|
||||
.addBreakAbility(new ToolAbility.RecursionAbility(5))
|
||||
.addHitAbility(new WeaponAbility.ChainsawAbility(4))
|
||||
.addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw");
|
||||
.addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw");
|
||||
|
||||
schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab)
|
||||
.addHitAbility(new WeaponAbility.RadiationAbility(50F))
|
||||
@ -5390,7 +5390,7 @@ public class ModItems {
|
||||
.addBreakAbility(new ToolAbility.SilkAbility())
|
||||
.addBreakAbility(new LuckAbility(2))
|
||||
.addHitAbility(new WeaponAbility.ChainsawAbility(6))
|
||||
.addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim");
|
||||
.addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim");
|
||||
|
||||
elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100)
|
||||
.addBreakAbility(new ToolAbility.HammerAbility(2))
|
||||
|
||||
@ -1,20 +1,33 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.play.client.C07PacketPlayerDigging;
|
||||
import net.minecraft.network.play.server.S23PacketBlockChange;
|
||||
import net.minecraft.stats.StatList;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.common.IShearable;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
|
||||
public interface IItemAbility {
|
||||
|
||||
public boolean canHarvestBlock(Block par1Block, ItemStack itemStack);
|
||||
public boolean isShears(ItemStack stack);
|
||||
|
||||
public default boolean canShearBlock(Block block, ItemStack stack, World world, int x, int y, int z) {
|
||||
return this.isShears(stack) && block instanceof IShearable && ((IShearable) block).isShearable(stack, world, x, y, z);
|
||||
}
|
||||
|
||||
public default void breakExtraBlock(World world, int x, int y, int z, EntityPlayer playerEntity, int refX, int refY, int refZ) {
|
||||
|
||||
@ -30,7 +43,7 @@ public interface IItemAbility {
|
||||
Block block = world.getBlock(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
if(!canHarvestBlock(block, stack) || block == Blocks.bedrock)
|
||||
if(!(canHarvestBlock(block, stack) || canShearBlock(block, stack, world, x, y, z)) || block == Blocks.bedrock)
|
||||
return;
|
||||
|
||||
Block refBlock = world.getBlock(refX, refY, refZ);
|
||||
@ -58,9 +71,13 @@ public interface IItemAbility {
|
||||
player.getCurrentEquippedItem().func_150999_a(world, block, x, y, z, player);
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
if(canShearBlock(block, stack, world, x, y, z)) {
|
||||
shearBlock(world, x, y, z, block, player);
|
||||
}
|
||||
|
||||
block.onBlockHarvested(world, x, y, z, meta, player);
|
||||
|
||||
|
||||
if(block.removedByPlayer(world, player, x, y, z, true)) {
|
||||
block.onBlockDestroyedByPlayer(world, x, y, z, meta);
|
||||
block.harvestBlock(world, player, x, y, z, meta);
|
||||
@ -87,6 +104,31 @@ public interface IItemAbility {
|
||||
}
|
||||
}
|
||||
|
||||
/** Assumes a canShearBlock check has passed, will most likely crash otherwise! */
|
||||
public static void shearBlock(World world, int x, int y, int z, Block block, EntityPlayer player) {
|
||||
|
||||
ItemStack held = player.getHeldItem();
|
||||
|
||||
IShearable target = (IShearable) block;
|
||||
if(target.isShearable(held, player.worldObj, x, y, z)) {
|
||||
ArrayList<ItemStack> drops = target.onSheared(held, player.worldObj, x, y, z, EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, held));
|
||||
Random rand = new Random();
|
||||
|
||||
for(ItemStack stack : drops) {
|
||||
float f = 0.7F;
|
||||
double d = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
|
||||
double d1 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
|
||||
double d2 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
|
||||
EntityItem entityitem = new EntityItem(player.worldObj, (double) x + d, (double) y + d1, (double) z + d2, stack);
|
||||
entityitem.delayBeforeCanPickup = 10;
|
||||
player.worldObj.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
|
||||
held.damageItem(1, player);
|
||||
player.addStat(StatList.mineBlockStatArray[Block.getIdFromBlock(block)], 1);
|
||||
}
|
||||
}
|
||||
|
||||
public static void standardDigPost(World world, int x, int y, int z, EntityPlayerMP player) {
|
||||
|
||||
Block block = world.getBlock(x, y, z);
|
||||
|
||||
@ -33,21 +33,23 @@ public class ItemLeadBox extends Item implements IGUIProvider {
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerLeadBox(player.inventory, new InventoryLeadBox(player.getHeldItem()));
|
||||
return new ContainerLeadBox(player.inventory, new InventoryLeadBox(player, player.getHeldItem()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUILeadBox(player.inventory, new InventoryLeadBox(player.getHeldItem()));
|
||||
return new GUILeadBox(player.inventory, new InventoryLeadBox(player, player.getHeldItem()));
|
||||
}
|
||||
|
||||
public static class InventoryLeadBox implements IInventory {
|
||||
|
||||
public final EntityPlayer player;
|
||||
public final ItemStack box;
|
||||
public ItemStack[] slots;
|
||||
|
||||
public InventoryLeadBox(ItemStack box) {
|
||||
public InventoryLeadBox(EntityPlayer player, ItemStack box) {
|
||||
this.player = player;
|
||||
this.box = box;
|
||||
slots = new ItemStack[this.getSizeInventory()];
|
||||
|
||||
@ -137,8 +139,15 @@ public class ItemLeadBox extends Item implements IGUIProvider {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override public void openInventory() { }
|
||||
@Override public void closeInventory() { }
|
||||
@Override
|
||||
public void openInventory() {
|
||||
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateOpen", 1.0F, 0.8F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeInventory() {
|
||||
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateClose", 1.0F, 0.8F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
|
||||
@ -99,4 +99,9 @@ public class ItemSwordAbility extends ItemSword implements IItemAbility {
|
||||
protected boolean canOperate(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isShears(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,16 +31,18 @@ import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.ChatStyle;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.IShearable;
|
||||
|
||||
public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRockTool {
|
||||
|
||||
private EnumToolType toolType;
|
||||
private EnumRarity rarity = EnumRarity.common;
|
||||
protected boolean isShears = false;
|
||||
protected EnumToolType toolType;
|
||||
protected EnumRarity rarity = EnumRarity.common;
|
||||
//was there a reason for this to be private?
|
||||
protected float damage;
|
||||
protected double movement;
|
||||
private List<ToolAbility> breakAbility = new ArrayList() {{ add(null); }};
|
||||
private List<WeaponAbility> hitAbility = new ArrayList();
|
||||
protected List<ToolAbility> breakAbility = new ArrayList() {{ add(null); }};
|
||||
protected List<WeaponAbility> hitAbility = new ArrayList();
|
||||
|
||||
public static enum EnumToolType {
|
||||
|
||||
@ -72,6 +74,11 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc
|
||||
public Set<Material> materials = new HashSet();
|
||||
public Set<Block> blocks = new HashSet();
|
||||
}
|
||||
|
||||
public ItemToolAbility setShears() {
|
||||
this.isShears = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemToolAbility(float damage, double movement, ToolMaterial material, EnumToolType type) {
|
||||
super(0, material, type.blocks);
|
||||
@ -129,7 +136,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc
|
||||
Block block = world.getBlock(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
if(!world.isRemote && canHarvestBlock(block, stack) && this.getCurrentAbility(stack) != null && canOperate(stack))
|
||||
if(!world.isRemote && (canHarvestBlock(block, stack) || canShearBlock(block, stack, world, x, y, z)) && this.getCurrentAbility(stack) != null && canOperate(stack))
|
||||
return this.getCurrentAbility(stack).onDig(world, x, y, z, player, block, meta, this);
|
||||
|
||||
return false;
|
||||
@ -252,9 +259,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc
|
||||
}
|
||||
|
||||
private ToolAbility getCurrentAbility(ItemStack stack) {
|
||||
|
||||
int ability = getAbility(stack) % this.breakAbility.size();
|
||||
|
||||
return this.breakAbility.get(ability);
|
||||
}
|
||||
|
||||
@ -289,4 +294,9 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc
|
||||
public boolean canBreakRock(World world, EntityPlayer player, ItemStack tool, Block block, int x, int y, int z) {
|
||||
return canOperate(tool) && this.rockBreaker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isShears(ItemStack stack) {
|
||||
return this.isShears;
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,7 +84,14 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser,
|
||||
|
||||
int range = 24;
|
||||
boolean silexSpacing = false;
|
||||
if(this.isOn && power >= powerReq * Math.pow(3, mode.ordinal()) && this.mode != EnumWavelengths.NULL) {
|
||||
|
||||
int req = (int) (powerReq * ((mode.ordinal() == 0) ? 0 : Math.pow(3, mode.ordinal())));
|
||||
|
||||
if(this.isOn && this.mode != EnumWavelengths.NULL && power < req) {
|
||||
this.power = 0;
|
||||
}
|
||||
|
||||
if(this.isOn && power >= req && this.mode != EnumWavelengths.NULL) {
|
||||
|
||||
int distance = this.distance-1;
|
||||
double blx = Math.min(xCoord, xCoord + dir.offsetX * distance) + 0.2;
|
||||
@ -106,7 +113,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser,
|
||||
}
|
||||
}
|
||||
|
||||
power -= powerReq * ((mode.ordinal() == 0) ? 0 : Math.pow(3, mode.ordinal()));
|
||||
power -= req;
|
||||
for(int i = 3; i < range; i++) {
|
||||
|
||||
int x = xCoord + dir.offsetX * i;
|
||||
|
||||
@ -32,7 +32,7 @@ public class TileEntityConnector extends TileEntityPylonBase {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite();
|
||||
//pos.add(new int[] {xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ});
|
||||
|
||||
TileEntity te = worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
||||
|
||||
if(te instanceof IEnergyConductor) {
|
||||
|
||||
|
||||
@ -316,6 +316,7 @@ container.iGenerator=Industrieller Generator
|
||||
container.keyForge=Schlossertisch
|
||||
container.launchPad=Raketenabschussrampe
|
||||
container.launchTable=Große Startrampe
|
||||
container.leadBox=Sicherheitsbehälter
|
||||
container.machineBoiler=Ölwärmer
|
||||
container.machineCMB=CMB-Stahl Hochofen
|
||||
container.machineCoal=Verbrennungsgenerator
|
||||
|
||||
@ -382,48 +382,6 @@ book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the ef
|
||||
book_lore.memo_schrab_nuke.page.2=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned.
|
||||
book_lore.memo_schrab_nuke.page.3=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually.
|
||||
|
||||
book_lore.insanity_1.name=Torn Page
|
||||
book_lore.insanity_1.author=D Ferguson
|
||||
book_lore.insanity_1.page.1=August 6th $ $ Months, no, years worth of dicking about wrestling with investors and operating the greatest energy hog in the northern hemisphere has finally paid off.
|
||||
book_lore.insanity_1.page.2=While we aren't entirely sure what exactly we found - given we ran gigavolt collisions on particles that were still poorly documented - the results couldn't have been more exciting.
|
||||
book_lore.insanity_1.page.3=We haven't found a name for whatever it is we've found, nor are we sure if we're looking at a new type of particle, a wormhole leading into another dimension, or satan's anus, but I'm sure our PR people can come up with something.
|
||||
|
||||
book_lore.insanity_2.name=Torn Page
|
||||
book_lore.insanity_2.author=D Ferguson
|
||||
book_lore.insanity_2.page.1=August 8th $ $ We've kept "The Thing" (yes that's what we call it for now) in magnetic isolation for the past days. Spectroscopy tests ended up breaking our spectrometer, but we managed to gain some useful data.
|
||||
book_lore.insanity_2.page.2=For starters, this thing glows like a christmas tree, radiation photons of about every wavelength you could think of enveloped by a powerful infrared corona. The logical conclusion is that looking at it with your naked
|
||||
book_lore.insanity_2.page.3=eye would most likely kill you. Now that begs the question: How can a particle this tiny radiate such immense energy? What are you hiding, little man?
|
||||
|
||||
book_lore.insanity_3.name=Torn Page
|
||||
book_lore.insanity_3.author=D Ferguson
|
||||
book_lore.insanity_3.page.1=August 22nd $ $ I haven't slept right in days. Doc said he couldn't find anything. Been on all sorts of medication now, but the headaches only get worse. Lab boys suspect it might be contamination from the incident two weeks ago.
|
||||
book_lore.insanity_3.page.2=Doc said it's not that likely, ARS is different. I might need to take some time off if this continues. The Thing is still in containment, the lab boys speculate if the field goes down, the entire complex turns into a mushroom cloud.
|
||||
book_lore.insanity_3.page.3=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that.
|
||||
|
||||
book_lore.insanity_4.name=Torn Page
|
||||
book_lore.insanity_4.author=D Ferguson
|
||||
book_lore.insanity_4.page.1=August 28th $ $ They denied my request for leave and I've been pushing through the past few days. Headaches are getting worse. I'm not the only one who's feeling it, either. Some of the lab boys are in a similar situation.
|
||||
book_lore.insanity_4.page.2=All the while The Thing has left the complex - GOOD. Some suits came in yesterday and had it shipped off, god knows where. One of the lab boys, Zachary, said they're probably burying the containment vessel in the desert, slowly
|
||||
book_lore.insanity_4.page.3=trying to "fizzle out" The Thing far off from civilization. I say let's shoot it into space. Needless to say, our investors cut all funding for the time being. I should start looking for another job.
|
||||
|
||||
book_lore.insanity_5.name=Torn Page
|
||||
book_lore.insanity_5.author=D Ferguson
|
||||
book_lore.insanity_5.page.1=September 11th $ $ I'm having this re-occurring nightmare. I'm walking around in an open space and there's these people everywhere, people in rubber suits and freakishly deformed faces. It's always the same nightmare,
|
||||
book_lore.insanity_5.page.2=and one of the guys from the lab I've spoken with lately has had the same dream. Meanwhile my post has been rather boring, the accelerator has been shut down, all ongoing projects are on halt and our budget is slowly melting away.
|
||||
book_lore.insanity_5.page.3=Something is telling me that The Thing is still out there somewhere. I can feel it.
|
||||
|
||||
book_lore.insanity_6.name=Torn Page
|
||||
book_lore.insanity_6.author=D Ferguson
|
||||
book_lore.insanity_6.page.1=October 3rd $ $ Half the staff is dead, most of the rest is in the ICU. My condition hasn't changed in the past weeks, for better or worse.
|
||||
book_lore.insanity_6.page.2=Reality is starting to feel less and less real however. Sometimes I look up into the sky at night and hallucinate that thing we discovered all those weeks ago.
|
||||
book_lore.insanity_6.page.3=That same brilliant sheen of crimson that our spectrometer spat out. My doc says it's delirium and stress caused by the incident, and perhaps hes right, but the meds aren't working at all.
|
||||
|
||||
book_lore.insanity_7.name=Torn Page
|
||||
book_lore.insanity_7.author=D Ferguson
|
||||
book_lore.insanity_7.page.1=December 12th $ $ I've been out of a job, but to be honest I'm somewhat thankful about it. My old workplace has gone up in flames - or so they say.
|
||||
book_lore.insanity_7.page.2=The seismological observatory a couple miles south recorded constant earthquakes for days on end, not that anyone else would have noticed this deep in the desert.
|
||||
book_lore.insanity_7.page.3=I have concluded that this place was cursed, making everyone sick and then descending into hell like some sort of Edgar Allan Poe story. Good riddance.
|
||||
|
||||
cannery.f1=[ Press F1 for help ]
|
||||
|
||||
cannery.centrifuge=Gas Centrifuge
|
||||
@ -638,6 +596,7 @@ container.iGenerator=Industrial Generator
|
||||
container.keyForge=Locksmith Table
|
||||
container.launchPad=Missile Launch Pad
|
||||
container.launchTable=Large Launch Pad
|
||||
container.leadBox=Containment Box
|
||||
container.machineBoiler=Oil Heater
|
||||
container.machineCMB=CMB Steel Furnace
|
||||
container.machineCoal=Combustion Generator
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Loading…
x
Reference in New Issue
Block a user