Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @EventHandler
- def preInit(e:FMLPreInitializationEvent): Unit ={
- val item=new Item(){
- setUnlocalizedName("TestItem")
- override def onItemUse(p_77648_1_ : ItemStack, p_77648_2_ : EntityPlayer, p_77648_3_ : World, p_77648_4_ : Int, p_77648_5_ : Int, p_77648_6_ : Int, p_77648_7_ : Int, p_77648_8_ : Float, p_77648_9_ : Float, p_77648_10_ : Float):Boolean={
- if(p_77648_2_.worldObj.isRemote)
- return
- regen(p_77648_2_)//регенить когда кликнул
- //p_77648_2_.worldObj.setBlock(p_77648_2_.posX.toInt,p_77648_2_.posY.toInt,p_77648_2_.posZ.toInt,Blocks.clay)//вот это пашет
- true
- }
- }
- GameRegistry.registerItem(item,"TestItem")
- }
- def regen(player: EntityPlayer): Unit = {
- val x=player.posX.asInstanceOf[Int] >> 4
- val y=player.posY.asInstanceOf[Int] >> 4
- //Чанк-провайдер юзается из мода RTG, но не думаю, что это влияет: массив же заполняется как надо
- val chunkLocation = new PlaneLocation.Invariant(x,y)
- val mapRand=new Random(worldSeed)
- val rand=new Random(worldSeed)
- rand.setSeed(x.asInstanceOf[Long] * 0x4f9939f508L + y.asInstanceOf[Long] * 0x1ef1565bd5L)
- var blocks = new Array[Block](65536)
- var metadata = new Array[Byte](65536)
- var k:Int=0
- val worldObj=DimensionManager.getWorld(0)
- val cmr=DimensionManager.getWorld(0).getWorldChunkManager.asInstanceOf[WorldChunkManagerRTG]
- val landscape = landscapeGenerator.get(WorldTypeRTG.chunkProvider).asInstanceOf[LandscapeGenerator].landscape(cmr, x *16, y*16)
- WorldTypeRTG.chunkProvider.generateTerrain(cmr, x, y, blocks, metadata, landscape.biome, landscape.noise)//заполняются массивы, это происходит дольше тика, но игра не фризит
- val cx=x<<4
- val cy=y<<4//коорды начала чанка
- for(i <- 0 until 16)
- {
- for(j <- 0 until 16)
- {
- for(k <- 0 until 256)
- {
- val p = (j * 16 + i) * 256 + k//я уверен в этой формуле
- player.worldObj.setBlock(cx+i,k,cy+j,blocks(p),metadata(p),3)
- player.worldObj.markBlockForUpdate(cx+i,k,cy+j)//если юзать worldObj, который берется из DimensionManager, эффект не изменяется
- }
- }
- }
- println("test")//до этого момента доходит
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement