mirror of
https://github.com/GTNewHorizons/Hardcore-Ender-Expansion.git
synced 2026-10-26 14:24:03 +00:00
Removed ISBRHs
This commit is contained in:
1 parent
53e237515b
commit
a225aa0c29
6 files changed
-408
No files matched your search
@@ -1,115 +0,0 @@
|
||||
package chylex.hee.render.block;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.EntityRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import chylex.hee.block.BlockCrossedDecoration;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderBlockCrossedDecoration implements ISimpleBlockRenderingHandler{
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer){}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer){
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world,x,y,z));
|
||||
int colorMultiplier = block.colorMultiplier(world,x,y,z);
|
||||
float r = (colorMultiplier>>16&255)/255F,
|
||||
g = (colorMultiplier>>8&255)/255F,
|
||||
b = (colorMultiplier&255)/255F;
|
||||
|
||||
if (EntityRenderer.anaglyphEnable){
|
||||
r = (r*30F+g*59F+b*11F)/100F;
|
||||
g = (r*30F+g*70F)/100F;
|
||||
b = (r*30F+b*70F)/100F;
|
||||
}
|
||||
|
||||
tessellator.setColorOpaque_F(r,g,b);
|
||||
double posX = x, posY = y, posZ = z;
|
||||
|
||||
long offsetSeed = (x*3129871)^z*116129781L^y;
|
||||
offsetSeed = offsetSeed*offsetSeed*42317861L+offsetSeed*11L;
|
||||
|
||||
int meta = world.getBlockMetadata(x,y,z);
|
||||
float scale = 1F, xzScaleMp = 0.45F;
|
||||
|
||||
switch(meta){
|
||||
case BlockCrossedDecoration.dataInfestedGrass:
|
||||
case BlockCrossedDecoration.dataInfestedTallgrass:
|
||||
case BlockCrossedDecoration.dataInfestedFern:
|
||||
case BlockCrossedDecoration.dataThornBush:
|
||||
posX += (((offsetSeed>>16&15L)/15F)-0.5D)*0.5D;
|
||||
posY += (((offsetSeed>>20&15L)/15F)-1D)*0.2D;
|
||||
posZ += (((offsetSeed>>24&15L)/15F)-0.5D)*0.5D;
|
||||
break;
|
||||
|
||||
case BlockCrossedDecoration.dataLilyFire:
|
||||
posX += (((offsetSeed>>16&15L)/15F)-0.5D)*0.3D;
|
||||
posZ += (((offsetSeed>>24&15L)/15F)-0.5D)*0.3D;
|
||||
break;
|
||||
|
||||
case BlockCrossedDecoration.dataVioletMossTall:
|
||||
case BlockCrossedDecoration.dataVioletMossModerate:
|
||||
case BlockCrossedDecoration.dataVioletMossShort:
|
||||
scale = (float)(0.65D+(((offsetSeed>>8&15L)/15F)-0.5D)*0.1D);
|
||||
xzScaleMp = (float)(0.4D+(((offsetSeed>>8&15L)/15F)-0.5D)*0.15D);
|
||||
posX += (((offsetSeed>>16&15L)/15F)-0.5D)*0.6D;
|
||||
posY += (((offsetSeed>>20&15L)/15F)-1D)*0.1D;
|
||||
posZ += (((offsetSeed>>24&15L)/15F)-0.5D)*0.6D;
|
||||
break;
|
||||
}
|
||||
|
||||
drawCrossedSquares(block,meta,posX,posY,posZ,scale,xzScaleMp,renderer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void drawCrossedSquares(Block block, int meta, double x, double y, double z, float scale, float xzScaleMp, RenderBlocks renderer){
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
IIcon icon = renderer.getBlockIconFromSideAndMetadata(block,0,meta);
|
||||
|
||||
double iconU1 = icon.getMinU();
|
||||
double iconV1 = icon.getMinV();
|
||||
double iconU2 = icon.getMaxU();
|
||||
double iconV2 = icon.getMaxV();
|
||||
double finalScale = xzScaleMp*scale;
|
||||
double minX = x+0.5D-finalScale;
|
||||
double maxX = x+0.5D+finalScale;
|
||||
double minZ = z+0.5D-finalScale;
|
||||
double maxZ = z+0.5D+finalScale;
|
||||
|
||||
tessellator.addVertexWithUV(minX,y+scale,minZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(minX,y,minZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y,maxZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,maxZ,iconU2,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,maxZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y,maxZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y,minZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y+scale,minZ,iconU2,iconV1);
|
||||
tessellator.addVertexWithUV(minX,y+scale,maxZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(minX,y,maxZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y,minZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,minZ,iconU2,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,minZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y,minZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y,maxZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y+scale,maxZ,iconU2,iconV1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int renderType){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId(){
|
||||
return ModCommonProxy.renderIdCrossedDecoration;
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
package chylex.hee.render.block;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.EntityRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import chylex.hee.block.BlockList;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderBlockEndFlowerPot implements ISimpleBlockRenderingHandler{
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer){}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer){
|
||||
renderer.renderStandardBlock(block,x,y,z);
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(renderer.blockAccess,x,y,z));
|
||||
float f = 1F;
|
||||
int l = block.colorMultiplier(renderer.blockAccess,x,y,z);
|
||||
IIcon icon = renderer.getBlockIconFromSide(block,0);
|
||||
float red = (l>>16&255)/255F;
|
||||
float green = (l>>8&255)/255F;
|
||||
float blue = (l&255)/255F;
|
||||
|
||||
if (EntityRenderer.anaglyphEnable){
|
||||
float newRed = (red*30F+green*59F+blue*11F)/100F;
|
||||
float newGreen = (red*30F+green*70F)/100F;
|
||||
float newBlue = (red*30F+blue*70F)/100F;
|
||||
red = newRed;
|
||||
green = newGreen;
|
||||
blue = newBlue;
|
||||
}
|
||||
|
||||
tessellator.setColorOpaque_F(f*red,f*green,f*blue);
|
||||
float renderOffset = 0.1865F;
|
||||
renderer.renderFaceXPos(block,(x-0.5F+renderOffset),y,z,icon);
|
||||
renderer.renderFaceXNeg(block,(x+0.5F-renderOffset),y,z,icon);
|
||||
renderer.renderFaceZPos(block,x,y,(z-0.5F+renderOffset),icon);
|
||||
renderer.renderFaceZNeg(block,x,y,(z+0.5F-renderOffset),icon);
|
||||
renderer.renderFaceYPos(block,x,(y-0.5F+renderOffset+0.1875F),z,renderer.getBlockIcon(Blocks.dirt));
|
||||
|
||||
if (renderer.blockAccess.getBlockMetadata(x,y,z) < 15)renderer.renderBlockByRenderType(BlockList.death_flower,x,y,z);
|
||||
else renderer.drawCrossedSquares(BlockList.death_flower.getIcon(0,15),x,y,z,0.9F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int renderType){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId(){
|
||||
return ModCommonProxy.renderIdFlowerPot;
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package chylex.hee.render.block;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
import chylex.hee.render.BlockRenderHelper;
|
||||
import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderBlockObsidianSpecial implements ISimpleBlockRenderingHandler{
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer){
|
||||
BlockRenderHelper.renderInventoryBlock(block,metadata,renderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer){
|
||||
int meta = world.getBlockMetadata(x,y,z);
|
||||
|
||||
if (meta == 3)renderer.uvRotateEast = renderer.uvRotateWest = renderer.uvRotateTop = renderer.uvRotateBottom = 1;
|
||||
else if (meta == 4)renderer.uvRotateSouth = renderer.uvRotateNorth = 1;
|
||||
|
||||
boolean flag = renderer.renderStandardBlock(block,x,y,z);
|
||||
renderer.uvRotateSouth = renderer.uvRotateEast = renderer.uvRotateWest = 0;
|
||||
renderer.uvRotateNorth = renderer.uvRotateTop = renderer.uvRotateBottom = 0;
|
||||
return flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int renderType){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId(){
|
||||
return ModCommonProxy.renderIdObsidianSpecial;
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
package chylex.hee.render.block;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.EntityRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderBlockSpookyLeaves implements ISimpleBlockRenderingHandler{
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer){}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer){
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world,x,y,z));
|
||||
int colorMultiplier = block.colorMultiplier(world,x,y,z);
|
||||
float r = (colorMultiplier>>16&255)/255F,
|
||||
g = (colorMultiplier>>8&255)/255F,
|
||||
b = (colorMultiplier&255)/255F;
|
||||
|
||||
if (EntityRenderer.anaglyphEnable){
|
||||
r = (r*30F+g*59F+b*11F)/100F;
|
||||
g = (r*30F+g*70F)/100F;
|
||||
b = (r*30F+b*70F)/100F;
|
||||
}
|
||||
|
||||
tessellator.setColorOpaque_F(r,g,b);
|
||||
double posX = x, posY = y, posZ = z;
|
||||
|
||||
long offsetSeed = (x*3129871)^z*116129781L^y;
|
||||
offsetSeed = offsetSeed*offsetSeed*42317861L+offsetSeed*11L;
|
||||
float scale = (float)(1.05D+(((offsetSeed>>16&15L)/15F)-0.5D)*0.08D);
|
||||
posX += (((offsetSeed>>16&15L)/15F)-0.5D)*0.2D;
|
||||
posY += (((offsetSeed>>20&15L)/15F)-1D)*0.15D;
|
||||
posZ += (((offsetSeed>>24&15L)/15F)-0.5D)*0.2D;
|
||||
|
||||
drawCrossedSquares(block,world.getBlockMetadata(x,y,z),posX,posY,posZ,scale,renderer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void drawCrossedSquares(Block block, int meta, double x, double y, double z, float scale, RenderBlocks renderer){
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
IIcon icon = renderer.getBlockIconFromSideAndMetadata(block,0,meta);
|
||||
|
||||
long offsetSeed = (long)(x*3129871)^(long)z*116129781L^(long)y;
|
||||
offsetSeed = offsetSeed*offsetSeed*42317861L+offsetSeed*11L;
|
||||
double xOffset = (((offsetSeed>>16&15L)/15F)-0.5D)*0.1D;
|
||||
double zOffset = (((offsetSeed>>20&15L)/15F)-0.5D)*0.1D;
|
||||
|
||||
double iconU1 = icon.getMinU();
|
||||
double iconV1 = icon.getMinV();
|
||||
double iconU2 = icon.getMaxU();
|
||||
double iconV2 = icon.getMaxV();
|
||||
double finalScale = 0.45D*scale;
|
||||
double minX = x+0.5D-finalScale;
|
||||
double maxX = x+0.5D+finalScale;
|
||||
double minZ = z+0.5D-finalScale;
|
||||
double maxZ = z+0.5D+finalScale;
|
||||
|
||||
minX -= xOffset;
|
||||
maxX += xOffset;
|
||||
minZ -= zOffset;
|
||||
maxZ += zOffset;
|
||||
|
||||
tessellator.addVertexWithUV(minX,y+scale,minZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(minX,y,minZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y,maxZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,maxZ,iconU2,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,maxZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y,maxZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y,minZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y+scale,minZ,iconU2,iconV1);
|
||||
tessellator.addVertexWithUV(minX,y+scale,maxZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(minX,y,maxZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y,minZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,minZ,iconU2,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y+scale,minZ,iconU1,iconV1);
|
||||
tessellator.addVertexWithUV(maxX,y,minZ,iconU1,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y,maxZ,iconU2,iconV2);
|
||||
tessellator.addVertexWithUV(minX,y+scale,maxZ,iconU2,iconV1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int renderType){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId(){
|
||||
return ModCommonProxy.renderIdSpookyLeaves;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package chylex.hee.render.block;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import chylex.hee.block.BlockList;
|
||||
import chylex.hee.block.BlockTransportBeacon;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
import chylex.hee.render.BlockRenderHelper;
|
||||
import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
|
||||
public class RenderBlockTransportBeacon implements ISimpleBlockRenderingHandler{
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer){
|
||||
renderer.setOverrideBlockTexture(((BlockTransportBeacon)BlockList.transport_beacon).iconOutside);
|
||||
renderer.setRenderBounds(0D,0D,0D,1D,1D,1D);
|
||||
BlockRenderHelper.renderInventoryBlock(block,metadata,renderer);
|
||||
renderer.setOverrideBlockTexture(renderer.getBlockIcon(BlockList.laboratory_obsidian));
|
||||
renderer.setRenderBounds(0.001D,0.00625D,0.001D,0.999D,0.1875D,0.999D);
|
||||
BlockRenderHelper.renderInventoryBlock(block,metadata,renderer);
|
||||
renderer.setOverrideBlockTexture(renderer.getBlockIcon(BlockList.transport_beacon));
|
||||
renderer.setRenderBounds(0.1875D,0.1875D,0.1875D,0.8125D,0.875D,0.8125D);
|
||||
BlockRenderHelper.renderInventoryBlock(block,metadata,renderer);
|
||||
renderer.setRenderBounds(0D,0D,0D,1D,1D,1D);
|
||||
renderer.clearOverrideBlockTexture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer){
|
||||
renderer.setOverrideBlockTexture(((BlockTransportBeacon)BlockList.transport_beacon).iconOutside);
|
||||
renderer.setRenderBounds(0D,0D,0D,1D,1D,1D);
|
||||
renderer.renderStandardBlock(block,x,y,z);
|
||||
renderer.renderAllFaces = true;
|
||||
renderer.setOverrideBlockTexture(renderer.getBlockIcon(BlockList.laboratory_obsidian));
|
||||
renderer.setRenderBounds(0.001D,0.00625D,0.001D,0.999D,0.1875D,0.999D);
|
||||
renderer.renderStandardBlock(block,x,y,z);
|
||||
renderer.setOverrideBlockTexture(renderer.getBlockIcon(BlockList.transport_beacon));
|
||||
renderer.setRenderBounds(0.1875D,0.1875D,0.1875D,0.8125D,0.875D,0.8125D);
|
||||
renderer.renderStandardBlock(block,x,y,z);
|
||||
renderer.renderAllFaces = false;
|
||||
renderer.clearOverrideBlockTexture();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId(){
|
||||
return ModCommonProxy.renderIdTransportBeacon;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package chylex.hee.render.block;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
import chylex.hee.tileentity.TileEntityVoidChest;
|
||||
import net.minecraftforge.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
|
||||
public class RenderBlockVoidChest implements ISimpleBlockRenderingHandler{
|
||||
private final TileEntityVoidChest chestRenderer = new TileEntityVoidChest();
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer){
|
||||
GL11.glRotatef(90F,0F,1F,0F);
|
||||
GL11.glTranslatef(-0.5F,-0.5F,-0.5F);
|
||||
TileEntityRendererDispatcher.instance.renderTileEntityAt(chestRenderer,0D,0D,0D,0F);
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId(){
|
||||
return ModCommonProxy.renderIdVoidChest;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user