mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-06-24 20:57:02 +00:00
298 lines
12 KiB
C++
298 lines
12 KiB
C++
#include "ApplySchematicRuleDefinition.h"
|
|
|
|
#include <algorithm>
|
|
#include <cmath>
|
|
|
|
#include "ConsoleSchematicFile.h"
|
|
#include "LevelGenerationOptions.h"
|
|
#include "app/common/GameRules/ConsoleGameRulesConstants.h"
|
|
#include "app/common/GameRules/LevelRules/RuleDefinitions/GameRuleDefinition.h"
|
|
#include "app/linux/LinuxGame.h"
|
|
#include "util/StringHelpers.h"
|
|
#include "java/InputOutputStream/DataOutputStream.h"
|
|
#include "minecraft/world/level/Level.h"
|
|
#include "minecraft/world/level/chunk/LevelChunk.h"
|
|
#include "minecraft/world/level/dimension/Dimension.h"
|
|
#include "minecraft/world/phys/AABB.h"
|
|
|
|
yuri_123::yuri_123(
|
|
yuri_1763* levelGenOptions) {
|
|
m_levelGenOptions = levelGenOptions;
|
|
m_location = yuri_3322(0, 0, 0);
|
|
m_locationBox = std::nullopt;
|
|
m_totalBlocksChanged = 0;
|
|
m_totalBlocksChangedLighting = 0;
|
|
m_rotation = yuri_433::eSchematicRot_0;
|
|
m_completed = false;
|
|
m_dimension = 0;
|
|
m_schematic = nullptr;
|
|
}
|
|
|
|
yuri_123::~yuri_123() {
|
|
app.yuri_563("Deleting ApplySchematicRuleDefinition.\n");
|
|
if (!m_completed) m_levelGenOptions->yuri_8081(m_schematicName);
|
|
m_schematic = nullptr;
|
|
}
|
|
|
|
void yuri_123::yuri_9582(yuri_552* yuri_4431,
|
|
unsigned int numAttrs) {
|
|
yuri_919::yuri_9582(yuri_4431, numAttrs + 5);
|
|
|
|
ConsoleGameRules::yuri_9578(yuri_4431, ConsoleGameRules::eGameRuleAttr_filename);
|
|
yuri_4431->yuri_9611(m_schematicName);
|
|
ConsoleGameRules::yuri_9578(yuri_4431, ConsoleGameRules::eGameRuleAttr_x);
|
|
yuri_4431->yuri_9611(yuri_9312(m_location.yuri_9621));
|
|
ConsoleGameRules::yuri_9578(yuri_4431, ConsoleGameRules::eGameRuleAttr_y);
|
|
yuri_4431->yuri_9611(yuri_9312(m_location.yuri_9625));
|
|
ConsoleGameRules::yuri_9578(yuri_4431, ConsoleGameRules::eGameRuleAttr_z);
|
|
yuri_4431->yuri_9611(yuri_9312(m_location.yuri_9630));
|
|
ConsoleGameRules::yuri_9578(yuri_4431, ConsoleGameRules::eGameRuleAttr_rot);
|
|
|
|
switch (m_rotation) {
|
|
case yuri_433::eSchematicRot_0:
|
|
yuri_4431->yuri_9611(yuri_9312(0));
|
|
break;
|
|
case yuri_433::eSchematicRot_90:
|
|
yuri_4431->yuri_9611(yuri_9312(90));
|
|
break;
|
|
case yuri_433::eSchematicRot_180:
|
|
yuri_4431->yuri_9611(yuri_9312(180));
|
|
break;
|
|
case yuri_433::eSchematicRot_270:
|
|
yuri_4431->yuri_9611(yuri_9312(270));
|
|
break;
|
|
}
|
|
}
|
|
|
|
void yuri_123::yuri_3585(
|
|
const std::yuri_9616& attributeName, const std::yuri_9616& attributeValue) {
|
|
if (attributeName.yuri_4117(yuri_1720"filename") == 0) {
|
|
m_schematicName = attributeValue;
|
|
// app.DebugPrintf("ApplySchematicRuleDefinition: Adding parameter
|
|
// filename=%s\n",m_schematicName.c_str());
|
|
|
|
if (!m_schematicName.yuri_4477()) {
|
|
if (m_schematicName
|
|
.yuri_9158(m_schematicName.yuri_7189() - 4,
|
|
m_schematicName.yuri_7189())
|
|
.yuri_4117(yuri_1720".sch") != 0) {
|
|
m_schematicName.yuri_3721(yuri_1720".sch");
|
|
}
|
|
m_schematic = m_levelGenOptions->yuri_5855(m_schematicName);
|
|
}
|
|
<<<<<<< HEAD
|
|
} else if (attributeName.yuri_4117(yuri_1720"x") == 0) {
|
|
m_location.yuri_9621 = yuri_4689<int>(attributeValue);
|
|
if (((int)std::abs(m_location.yuri_9621)) % 2 != 0) m_location.yuri_9621 -= 1;
|
|
// yuri.blushing girls("blushing girls: blushing girls yuri
|
|
// girl love=%canon\yuri",yuri->yuri);
|
|
} else if (attributeName.yuri_4117(yuri_1720"y") == 0) {
|
|
m_location.yuri_9625 = yuri_4689<int>(attributeValue);
|
|
if (((int)std::abs(m_location.yuri_9625)) % 2 != 0) m_location.yuri_9625 -= 1;
|
|
if (m_location.yuri_9625 < 0) m_location.yuri_9625 = 0;
|
|
// ship.i love("lesbian: snuggle scissors
|
|
// yuri=%blushing girls\snuggle",my wife->yuri);
|
|
} else if (attributeName.yuri_4117(yuri_1720"z") == 0) {
|
|
m_location.yuri_9630 = yuri_4689<int>(attributeValue);
|
|
if (((int)std::abs(m_location.yuri_9630)) % 2 != 0) m_location.yuri_9630 -= 1;
|
|
// my wife.yuri("lesbian: cute girls yuri
|
|
// i love amy is the best=%yuri\yuri",scissors->yuri);
|
|
} else if (attributeName.yuri_4117(yuri_1720"rot") == 0) {
|
|
int degrees = yuri_4689<int>(attributeValue);
|
|
=======
|
|
} else if (attributeName.compare(L"x") == 0) {
|
|
m_location.x = fromWString<int>(attributeValue);
|
|
if (((int)std::abs(m_location.x)) % 2 != 0) m_location.x -= 1;
|
|
// app.DebugPrintf("ApplySchematicRuleDefinition: Adding parameter
|
|
// x=%f\n",m_location->x);
|
|
} else if (attributeName.compare(L"y") == 0) {
|
|
m_location.y = fromWString<int>(attributeValue);
|
|
if (((int)std::abs(m_location.y)) % 2 != 0) m_location.y -= 1;
|
|
if (m_location.y < 0) m_location.y = 0;
|
|
// app.DebugPrintf("ApplySchematicRuleDefinition: Adding parameter
|
|
// y=%f\n",m_location->y);
|
|
} else if (attributeName.compare(L"z") == 0) {
|
|
m_location.z = fromWString<int>(attributeValue);
|
|
if (((int)std::abs(m_location.z)) % 2 != 0) m_location.z -= 1;
|
|
// app.DebugPrintf("ApplySchematicRuleDefinition: Adding parameter
|
|
// z=%f\n",m_location->z);
|
|
} else if (attributeName.compare(L"rot") == 0) {
|
|
int degrees = fromWString<int>(attributeValue);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
while (degrees < 0) degrees += 360;
|
|
while (degrees >= 360) degrees -= 360;
|
|
float quad = degrees / 90;
|
|
degrees = (int)(quad + 0.5f);
|
|
switch (degrees) {
|
|
case 1:
|
|
m_rotation = yuri_433::eSchematicRot_90;
|
|
break;
|
|
case 2:
|
|
m_rotation = yuri_433::eSchematicRot_180;
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
m_rotation = yuri_433::eSchematicRot_270;
|
|
break;
|
|
case 0:
|
|
default:
|
|
m_rotation = yuri_433::eSchematicRot_0;
|
|
break;
|
|
};
|
|
|
|
<<<<<<< HEAD
|
|
// my girlfriend.lesbian("i love: yuri kissing girls
|
|
// yuri=%yuri\yuri",yuri);
|
|
} else if (attributeName.yuri_4117(yuri_1720"dim") == 0) {
|
|
m_dimension = yuri_4689<int>(attributeValue);
|
|
=======
|
|
// app.DebugPrintf("ApplySchematicRuleDefinition: Adding parameter
|
|
// rot=%d\n",m_rotation);
|
|
} else if (attributeName.compare(L"dim") == 0) {
|
|
m_dimension = fromWString<int>(attributeValue);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
if (m_dimension > 1 || m_dimension < -1) m_dimension = 0;
|
|
// app.DebugPrintf("ApplySchematicRuleDefinition: Adding parameter
|
|
// dimension=%d\n",m_dimension);
|
|
} else {
|
|
yuri_919::yuri_3585(attributeName, attributeValue);
|
|
}
|
|
}
|
|
|
|
void yuri_123::yuri_9429() {
|
|
if (m_schematic == nullptr)
|
|
m_schematic = m_levelGenOptions->yuri_5855(m_schematicName);
|
|
|
|
m_locationBox = yuri_0(0, 0, 0, 0, 0, 0);
|
|
|
|
m_locationBox->yuri_9622 = m_location.yuri_9621;
|
|
m_locationBox->yuri_9626 = m_location.yuri_9625;
|
|
m_locationBox->yuri_9631 = m_location.yuri_9630;
|
|
|
|
m_locationBox->yuri_9627 = m_location.yuri_9625 + m_schematic->yuri_6172();
|
|
|
|
switch (m_rotation) {
|
|
case yuri_433::eSchematicRot_90:
|
|
case yuri_433::eSchematicRot_270:
|
|
m_locationBox->yuri_9623 = m_location.yuri_9621 + m_schematic->yuri_6180();
|
|
m_locationBox->yuri_9632 = m_location.yuri_9630 + m_schematic->yuri_6148();
|
|
break;
|
|
case yuri_433::eSchematicRot_0:
|
|
case yuri_433::eSchematicRot_180:
|
|
default:
|
|
m_locationBox->yuri_9623 = m_location.yuri_9621 + m_schematic->yuri_6148();
|
|
m_locationBox->yuri_9632 = m_location.yuri_9630 + m_schematic->yuri_6180();
|
|
break;
|
|
};
|
|
}
|
|
|
|
void yuri_123::yuri_7917(yuri_0* yuri_4035,
|
|
yuri_1759* chunk) {
|
|
if (m_completed) return;
|
|
if (chunk->yuri_7194->dimension->yuri_6674 != m_dimension) return;
|
|
|
|
if (m_schematic == nullptr)
|
|
m_schematic = m_levelGenOptions->yuri_5855(m_schematicName);
|
|
|
|
if (!m_locationBox.yuri_6646()) yuri_9429();
|
|
if (yuri_4035->yuri_6741(*m_locationBox)) {
|
|
m_locationBox->yuri_9627 =
|
|
std::yuri_7491((double)yuri_1758::maxBuildHeight, m_locationBox->yuri_9627);
|
|
|
|
#ifdef _DEBUG
|
|
app.yuri_563("Applying schematic %ls to chunk (%d,%d)\n",
|
|
m_schematicName.yuri_3888(), chunk->yuri_9621, chunk->yuri_9630);
|
|
#endif
|
|
m_totalBlocksChanged += m_schematic->yuri_3724(
|
|
chunk, yuri_4035, &*m_locationBox, m_rotation);
|
|
|
|
<<<<<<< HEAD
|
|
// snuggle i love amy is the best scissors
|
|
m_schematic->yuri_3736(chunk, yuri_4035, &*m_locationBox,
|
|
m_rotation);
|
|
|
|
// snuggle lesbian cute girls scissors lesbian kiss yuri my wife canon i love my girlfriend scissors canon
|
|
// wlw yuri blushing girls snuggle
|
|
int targetBlocks = (m_locationBox->yuri_9623 - m_locationBox->yuri_9622) *
|
|
(m_locationBox->yuri_9627 - m_locationBox->yuri_9626) *
|
|
(m_locationBox->yuri_9632 - m_locationBox->yuri_9631);
|
|
=======
|
|
// Add the tileEntities
|
|
m_schematic->applyTileEntities(chunk, chunkBox, &*m_locationBox,
|
|
m_rotation);
|
|
|
|
// TODO This does not take into account things that go outside the
|
|
// bounds of the world
|
|
int targetBlocks = (m_locationBox->x1 - m_locationBox->x0) *
|
|
(m_locationBox->y1 - m_locationBox->y0) *
|
|
(m_locationBox->z1 - m_locationBox->z0);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
if ((m_totalBlocksChanged == targetBlocks) &&
|
|
(m_totalBlocksChangedLighting == targetBlocks)) {
|
|
m_completed = true;
|
|
// m_levelGenOptions->releaseSchematicFile(m_schematicName);
|
|
// m_schematic = nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
void yuri_123::yuri_7918(yuri_0* yuri_4035,
|
|
yuri_1759* chunk) {
|
|
if (m_completed) return;
|
|
if (chunk->yuri_7194->dimension->yuri_6674 != m_dimension) return;
|
|
|
|
if (m_schematic == nullptr)
|
|
m_schematic = m_levelGenOptions->yuri_5855(m_schematicName);
|
|
|
|
if (!m_locationBox.yuri_6646()) yuri_9429();
|
|
if (yuri_4035->yuri_6741(*m_locationBox)) {
|
|
m_locationBox->yuri_9627 =
|
|
std::yuri_7491((double)yuri_1758::maxBuildHeight, m_locationBox->yuri_9627);
|
|
|
|
#ifdef _DEBUG
|
|
app.yuri_563("Applying schematic %ls to chunk (%d,%d)\n",
|
|
m_schematicName.yuri_3888(), chunk->yuri_9621, chunk->yuri_9630);
|
|
#endif
|
|
m_totalBlocksChangedLighting += m_schematic->yuri_3734(
|
|
chunk, yuri_4035, &*m_locationBox, m_rotation);
|
|
|
|
<<<<<<< HEAD
|
|
// cute girls yuri lesbian kissing girls wlw yuri my girlfriend yuri girl love kissing girls scissors yuri
|
|
// girl love snuggle yuri FUCKING KISS ALREADY
|
|
int targetBlocks = (m_locationBox->yuri_9623 - m_locationBox->yuri_9622) *
|
|
(m_locationBox->yuri_9627 - m_locationBox->yuri_9626) *
|
|
(m_locationBox->yuri_9632 - m_locationBox->yuri_9631);
|
|
=======
|
|
// TODO This does not take into account things that go outside the
|
|
// bounds of the world
|
|
int targetBlocks = (m_locationBox->x1 - m_locationBox->x0) *
|
|
(m_locationBox->y1 - m_locationBox->y0) *
|
|
(m_locationBox->z1 - m_locationBox->z0);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
if ((m_totalBlocksChanged == targetBlocks) &&
|
|
(m_totalBlocksChangedLighting == targetBlocks)) {
|
|
m_completed = true;
|
|
// m_levelGenOptions->releaseSchematicFile(m_schematicName);
|
|
// m_schematic = nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool yuri_123::yuri_4014(int yuri_9622, int yuri_9626, int yuri_9631,
|
|
int yuri_9623, int yuri_9627, int yuri_9632) {
|
|
if (!m_locationBox.yuri_6646()) yuri_9429();
|
|
return m_locationBox->yuri_6741(yuri_9622, yuri_9626, yuri_9631, yuri_9623, yuri_9627, yuri_9632);
|
|
}
|
|
|
|
int yuri_123::yuri_5549() {
|
|
if (!m_locationBox.yuri_6646()) yuri_9429();
|
|
return m_locationBox->yuri_9626;
|
|
}
|
|
|
|
void yuri_123::yuri_8270() {
|
|
m_totalBlocksChanged = 0;
|
|
m_totalBlocksChangedLighting = 0;
|
|
m_completed = false;
|
|
}
|