Updated to 1.15

This commit is contained in:
Tschipp 2020-09-06 17:12:05 +02:00
parent fe6a41e3f3
commit 63d7b6dec8
21 changed files with 726 additions and 703 deletions

29
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,29 @@
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage('Clean') {
steps {
withCredentials([file(credentialsId: 'mod_build_secrets', variable: 'ORG_GRADLE_PROJECT_secretFile')]) {
echo 'Cleaning Project'
sh 'chmod +x gradlew'
sh './gradlew clean'
}
}
}
stage('Build and Deploy') {
steps {
withCredentials([file(credentialsId: 'mod_build_secrets', variable: 'ORG_GRADLE_PROJECT_secretFile')]) {
echo 'Building and Deploying to Maven'
sh './gradlew build publish'
}
}
}
}
post {
always {
archive 'build/libs/**.jar'
}
}
}

View File

@ -9,41 +9,43 @@ buildscript {
}
}
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
version = '1.0'
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'modid'
apply from: 'https://raw.githubusercontent.com/MinecraftModDevelopment/Gradle-Collection/22e7d543a18cd30675277fbfa3669e3d9e206010/generic/secrets.gradle'
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
import net.minecraftforge.gradle.common.task.SignJar
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
if (project.hasProperty('secretFile')) {
loadSecrets(new File((String) findProperty('secretFile')))
}
version = "${version}"
group = "tschipp.carryon"
archivesBaseName = "carryon-${minecraft_version}"
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
if (System.getenv('BUILD_NUMBER') != null) {
version += "." + System.getenv('BUILD_NUMBER')
}
minecraft {
// The mappings can be changed at any time, and must be in the following format.
// snapshot_YYYYMMDD Snapshot are built nightly.
// stable_# Stables are built at the discretion of the MCP team.
// Use non-default mappings at your own risk. they may not always work.
// Simply re-run your setup task after changing the mappings to update your workspace.
mappings channel: 'snapshot', version: '20190719-1.14.3'
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
// Default run configurations.
// These can be tweaked, removed, or duplicated as needed.
mappings channel: 'snapshot', version: "${mcp_mappings}"
runs {
client {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
mods {
examplemod {
carryon {
source sourceSets.main
}
}
@ -52,14 +54,12 @@ minecraft {
server {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
mods {
examplemod {
carryon {
source sourceSets.main
}
}
@ -68,16 +68,14 @@ minecraft {
data {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/')
args '--mod', 'carryon', '--all', '--output', file('src/generated/resources/')
mods {
examplemod {
carryon {
source sourceSets.main
}
}
@ -85,65 +83,121 @@ minecraft {
}
}
repositories {
maven {
url "https://maven.blamejared.com/"
}
}
dependencies {
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
minecraft 'net.minecraftforge:forge:1.14.4-28.1.0'
// You may put jars on which you depend on in ./libs or you may define them like so..
// compile "some.group:artifact:version:classifier"
// compile "some.group:artifact:version"
// Real examples
// compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
// compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
// The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
// provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
// These dependencies get remapped to your current MCP mappings
// deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
// For more info...
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
}
// Example for how to get properties into the manifest for reading by the runtime..
jar {
manifest {
attributes([
"Specification-Title": "examplemod",
"Specification-Vendor": "examplemodsareus",
"Specification-Title": "carryon",
"Specification-Vendor": "Carry On",
"Specification-Version": "1", // We are version 1 of ourselves
"Implementation-Title": project.name,
"Implementation-Version": "${version}",
"Implementation-Vendor" :"examplemodsareus",
"Implementation-Vendor" :"Carry On",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}
}
// Example configuration to allow publishing using the maven-publish task
// we define a custom artifact that is sourced from the reobfJar output task
// and then declare that to be published
// Note you'll need to add a repository here
def reobfFile = file("$buildDir/reobfJar/output.jar")
def reobfArtifact = artifacts.add('default', reobfFile) {
type 'jar'
builtBy 'reobfJar'
jar.finalizedBy('reobfJar')
task sourcesJar(type: Jar, dependsOn: classes) {
description = 'Creates a JAR containing the source code.'
from sourceSets.main.allSource
classifier = 'sources'
}
task javadocJar(type: Jar, dependsOn: javadoc) {
description = 'Creates a JAR containing the JavaDocs.'
from javadoc.destinationDir
classifier = 'javadoc'
}
task deobfJar(type: Jar) {
description = 'Creates a JAR containing the non-obfuscated compiled code.'
from sourceSets.main.output
classifier = "deobf"
}
artifacts {
archives sourcesJar
archives javadocJar
archives deobfJar
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact reobfArtifact
groupId project.group
artifactId project.archivesBaseName
version project.version
from components.java
// Allows the maven pom file to be modified.
pom.withXml {
// Go through all the dependencies.
asNode().dependencies.dependency.each { dep ->
println 'Surpressing artifact ' + dep.artifactId.last().value().last() + ' from maven dependencies.'
assert dep.parent().remove(dep)
}
}
artifact sourcesJar {
classifier 'sources'
}
artifact javadocJar {
classifier 'javadoc'
}
artifact deobfJar {
classifier 'deobf'
}
}
}
repositories {
maven {
url "file:///${project.projectDir}/mcmodsrepo"
url "file://" + System.getenv("local_maven")
}
}
}
}
task signJar(type: SignJar, dependsOn: jar) {
// Skips if the keyStore property is missing.
onlyIf {
project.hasProperty('modkeyStore')
}
// findProperty allows us to reference the property without it existing.
// Using project.propName would cause the script to fail validation if
// the property did not exist.
keyStore = project.findProperty('modkeyStore')
alias = project.findProperty('modkeyStoreAlias')
storePass = project.findProperty('modkeyStorePass')
keyPass = project.findProperty('modkeyStoreKeyPass')
inputFile = jar.archivePath
outputFile = jar.archivePath
}
// Runs this task automatically when build is ran.
build.dependsOn signJar

View File

@ -1,4 +1,7 @@
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
version=1.13
minecraft_version=1.15.2
mcp_mappings=20200514-1.15.1
forge_version=31.2.36

View File

@ -20,6 +20,7 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.loading.FMLPaths;
import net.minecraftforge.fml.network.NetworkRegistry;
import net.minecraftforge.fml.network.simple.SimpleChannel;
import net.minecraftforge.forgespi.language.IModInfo;
import tschipp.carryon.common.config.Configs;
import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.scripting.ScriptReader;
@ -35,10 +36,9 @@ import tschipp.carryon.proxy.ServerProxy;
public class CarryOn
{
public static IProxy proxy = DistExecutor.runForDist(() -> () -> new ClientProxy(), () -> () -> new ServerProxy());
public static IProxy proxy = DistExecutor.safeRunForDist(() -> ClientProxy::new, () -> ServerProxy::new);
public static final String MODID = "carryon";
public static final String VERSION = "1.12.2";
public static final Logger LOGGER = LogManager.getFormatterLogger("CarryOn");
public static final String DEPENDENCIES = "required-after:forge@[13.20.1.2386,);after:gamestages;";
public static final String CERTIFICATE_FINGERPRINT = "55e88f24d04398481ae6f1ce76f65fd776f14227";
@ -47,6 +47,7 @@ public class CarryOn
public static boolean FINGERPRINT_VIOLATED = false;
public static SimpleChannel network;
public static IModInfo info;
public CarryOn()
{
@ -58,13 +59,15 @@ public class CarryOn
Configs.loadConfig(Configs.CLIENT_CONFIG, FMLPaths.CONFIGDIR.get().resolve("carryon-client.toml"));
Configs.loadConfig(Configs.SERVER_CONFIG, FMLPaths.CONFIGDIR.get().resolve("carryon-server.toml"));
info = ModLoadingContext.get().getActiveContainer().getModInfo();
}
private void setup(final FMLCommonSetupEvent event)
{
String version = info.getVersion().toString();
// PreInitevent.
ScriptReader.preInit();
CarryOn.network = NetworkRegistry.newSimpleChannel(new ResourceLocation(CarryOn.MODID, "carryonpackets"), () -> CarryOn.VERSION, s -> true, s -> true);
CarryOn.network = NetworkRegistry.newSimpleChannel(new ResourceLocation(CarryOn.MODID, "carryonpackets"), () -> version, version::equals, version::equals);
// CLIENT PACKETS
CarryOn.network.registerMessage(0, CarrySlotPacket.class, CarrySlotPacket::toBytes, CarrySlotPacket::new, CarrySlotPacket::handle);
@ -73,14 +76,12 @@ public class CarryOn
// SERVER PACKETS
CarryOn.network.registerMessage(2, SyncKeybindPacket.class, SyncKeybindPacket::toBytes, SyncKeybindPacket::new, SyncKeybindPacket::handle);
RegistrationHandler.regCommonEvents();
// Init
ScriptReader.parseScripts();
RegistrationHandler.regOverrideList();
RegistrationHandler.regCaps();
proxy.setup(event);
}

View File

@ -2,37 +2,35 @@ package tschipp.carryon.client.event;
import java.util.Optional;
import com.mojang.blaze3d.platform.GLX;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModList;
import tschipp.carryon.client.helper.CarryRenderHelper;
import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.ScriptParseHelper;
import tschipp.carryon.common.item.ItemCarryonEntity;
import tschipp.carryon.common.scripting.CarryOnOverride;
import tschipp.carryon.common.scripting.ScriptChecker;
public class RenderEntityEvents
{
/*
* Renders the Entity in First Person
*/
@ -45,45 +43,47 @@ public class RenderEntityEvents
ItemStack stack = player.getHeldItemMainhand();
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
float partialticks = event.getPartialTicks();
MatrixStack matrix = event.getMatrixStack();
int light = event.getLight();
IRenderTypeBuffer buffer = event.getBuffers();
EntityRendererManager manager = Minecraft.getInstance().getRenderManager();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
{
if(ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr"))
return;
Entity entity = ItemCarryonEntity.getEntity(stack, world);
if (entity != null)
{
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
entity.setPosition(d0, d1, d2);
Vec3d playerpos = CarryRenderHelper.getExactPos(player, partialticks);
entity.setPosition(playerpos.x, playerpos.y, playerpos.z);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
float height = entity.getHeight();
float width = entity.getWidth();
GlStateManager.pushMatrix();
GlStateManager.scaled(.8, .8, .8);
GlStateManager.rotatef(180, 0, 1, 0);
GlStateManager.translated(0.0, -height - .1, width + 0.1);
GlStateManager.enableAlphaTest();
matrix.push();
matrix.scale(0.8f, 0.8f, 0.8f);
matrix.rotate(Vector3f.YP.rotationDegrees(180));
matrix.translate(0.0, -height - .1, width + 0.1);
RenderSystem.enableAlphaTest();
if (perspective == 0)
{
RenderHelper.enableStandardItemLighting();
Minecraft.getInstance().getRenderManager().setRenderShadow(false);
manager.setRenderShadow(false);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rotation = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scaled = ScriptParseHelper.getscaled(carryOverride.getRenderscaled());
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride);
String entityname = carryOverride.getRenderNameEntity();
if (entityname != null)
{
@ -99,37 +99,26 @@ public class RenderEntityEvents
if (nbttag != null)
newEntity.deserializeNBT(nbttag);
entity = newEntity;
entity.setPosition(d0, d1, d2);
entity.setPosition(playerpos.x, playerpos.y, playerpos.z);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
}
}
GlStateManager.translated(translation[0], translation[1], translation[2]);
GlStateManager.rotatef((float) rotation[0], 1, 0, 0);
GlStateManager.rotatef((float) rotation[1], 0, 1, 0);
GlStateManager.rotatef((float) rotation[2], 0, 0, 1);
GlStateManager.scaled(scaled[0], scaled[1], scaled[2]);
}
if(entity instanceof LivingEntity)
((LivingEntity) entity).hurtTime = 0;
this.renderEntityStatic(entity);
Minecraft.getInstance().getRenderManager().setRenderShadow(true);
manager.renderEntityStatic(entity, 0, 0, 0, 0f, 0, matrix, buffer, light);
manager.setRenderShadow(true);
}
GlStateManager.disableAlphaTest();
GlStateManager.scaled(1, 1, 1);
GlStateManager.popMatrix();
RenderSystem.disableAlphaTest();
matrix.pop();
RenderHelper.disableStandardItemLighting();
GlStateManager.disableRescaleNormal();
GlStateManager.activeTexture(GLX.GL_TEXTURE1);
GlStateManager.disableTexture();
GlStateManager.activeTexture(GLX.GL_TEXTURE0);
RenderSystem.disableRescaleNormal();
if (perspective == 0)
{
@ -138,182 +127,4 @@ public class RenderEntityEvents
}
}
}
@OnlyIn(Dist.CLIENT)
private void renderEntityStatic(Entity entity)
{
if (entity.ticksExisted == 0)
{
entity.lastTickPosX = entity.posX;
entity.lastTickPosY = entity.posY;
entity.lastTickPosZ = entity.posZ;
}
float f = entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw);
int i = this.getBrightnessForRender(entity, Minecraft.getInstance().player);
if (entity.isBurning())
{
i = 15728880;
}
int j = i % 65536;
int k = i / 65536;
GLX.glMultiTexCoord2f(GLX.GL_TEXTURE1, j, k);
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.setLightmapDisabled(false);
Minecraft.getInstance().getRenderManager().renderEntity(entity, 0.0D, 0.0D, 0.0D, f, 0.0F, true);
this.setLightmapDisabled(true);
}
@SuppressWarnings("deprecation")
@OnlyIn(Dist.CLIENT)
private int getBrightnessForRender(Entity entity, PlayerEntity player)
{
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(MathHelper.floor(player.posX), 0, MathHelper.floor(player.posZ));
if (entity.world.isBlockLoaded(blockpos$mutableblockpos))
{
blockpos$mutableblockpos.setY(MathHelper.floor(player.posY + entity.getEyeHeight()));
return entity.world.getCombinedLight(blockpos$mutableblockpos, 0);
}
else
{
return 0;
}
}
@OnlyIn(Dist.CLIENT)
private void setLightmapDisabled(boolean disabled)
{
GlStateManager.activeTexture(GLX.GL_TEXTURE1);
if (disabled)
{
GlStateManager.disableTexture();
}
else
{
GlStateManager.enableTexture();
}
GlStateManager.activeTexture(GLX.GL_TEXTURE0);
}
/*
* Renders the Entity in Third Person
*/
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void onPlayerRenderPost(RenderPlayerEvent.Post event)
{
World world = Minecraft.getInstance().world;
PlayerEntity player = event.getPlayer();
ClientPlayerEntity clientPlayer = Minecraft.getInstance().player;
ItemStack stack = player.getHeldItemMainhand();
float partialticks = event.getPartialRenderTick();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
{
Entity entity = ItemCarryonEntity.getEntity(stack, world);
float rotation = 0;
if (player.getRidingEntity() != null && player.getRidingEntity() instanceof LivingEntity)
rotation = -(player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * partialticks);
else
rotation = -(player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks);
if (entity != null)
{
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
double c0 = clientPlayer.lastTickPosX + (clientPlayer.posX - clientPlayer.lastTickPosX) * partialticks;
double c1 = clientPlayer.lastTickPosY + (clientPlayer.posY - clientPlayer.lastTickPosY) * partialticks;
double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * partialticks;
Vec3d cameraPos = Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView();
double xOffset = d0 - cameraPos.getX();
double yOffset = d1 - cameraPos.getY();
double zOffset = d2 - cameraPos.getZ();
float height = entity.getHeight();
float width = entity.getWidth();
float multiplier = height * width;
entity.setPosition(c0, c1, c2);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
GlStateManager.pushMatrix();
GlStateManager.translated(xOffset, yOffset, zOffset);
GlStateManager.scaled((10 - multiplier) * 0.08, (10 - multiplier) * 0.08, (10 - multiplier) * 0.08);
GlStateManager.rotatef(rotation, 0, 1f, 0);
GlStateManager.translated(0.0, height / 2 + -(height / 2) + 1, width - 0.1 < 0.7 ? width - 0.1 + (0.7 - (width - 0.1)) : width - 0.1);
if((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && Minecraft.getInstance().gameSettings.thirdPersonView == 0)
GlStateManager.translated(0, 0, -0.3);
if (RenderEvents.doSneakCheck(player))
{
GlStateManager.translated(0, -0.3, 0);
}
Minecraft.getInstance().getRenderManager().setRenderShadow(false);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rot = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scaled = ScriptParseHelper.getscaled(carryOverride.getRenderscaled());
String entityname = carryOverride.getRenderNameEntity();
if (entityname != null)
{
Entity newEntity = null;
Optional<EntityType<?>> type = EntityType.byKey(entityname);
if(type.isPresent())
newEntity = type.get().create(world);
if (newEntity != null)
{
CompoundNBT nbttag = carryOverride.getRenderNBT();
if (nbttag != null)
newEntity.deserializeNBT(nbttag);
entity = newEntity;
entity.setPosition(c0, c1, c2);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
}
}
GlStateManager.translated(translation[0], translation[1], translation[2]);
GlStateManager.rotatef((float) rot[0], 1, 0, 0);
GlStateManager.rotatef((float) rot[1], 0, 1, 0);
GlStateManager.rotatef((float) rot[2], 0, 0, 1);
GlStateManager.scaled(scaled[0], scaled[1], scaled[2]);
}
if(entity instanceof LivingEntity)
((LivingEntity) entity).hurtTime = 0;
renderEntityStatic(entity);
Minecraft.getInstance().getRenderManager().setRenderShadow(true);
GlStateManager.scaled(1, 1, 1);
GlStateManager.popMatrix();
}
}
}
}

View File

@ -1,9 +1,11 @@
package tschipp.carryon.client.event;
import java.lang.reflect.InvocationTargetException;
import java.util.Optional;
import com.mojang.blaze3d.platform.GLX;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
@ -12,20 +14,28 @@ import net.minecraft.client.GameSettings;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.IRenderTypeBuffer.Impl;
import net.minecraft.client.renderer.Quaternion;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.PlayerRenderer;
import net.minecraft.client.renderer.entity.model.PlayerModel;
import net.minecraft.client.renderer.entity.model.RendererModel;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.Pose;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Hand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.StringTextComponent;
@ -38,7 +48,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.client.event.RenderSpecificHandEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.TickEvent.PlayerTickEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.eventbus.api.EventPriority;
@ -46,6 +56,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.ModList;
import tschipp.carryon.CarryOn;
import tschipp.carryon.client.helper.CarryRenderHelper;
import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.Configs.Settings;
import tschipp.carryon.common.handler.ModelOverridesHandler;
@ -101,7 +112,8 @@ public class RenderEvents
{
CarryOnKeybinds.setKeyPressed(player, true);
CarryOn.network.sendToServer(new SyncKeybindPacket(true));
} else if (!keyPressed && playerKeyPressed)
}
else if (!keyPressed && playerKeyPressed)
{
CarryOnKeybinds.setKeyPressed(player, false);
CarryOn.network.sendToServer(new SyncKeybindPacket(false));
@ -212,6 +224,7 @@ public class RenderEvents
/*
* Renders the Block in First Person
*/
@SuppressWarnings("deprecation")
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void renderHand(RenderHandEvent event)
@ -221,6 +234,9 @@ public class RenderEvents
ItemStack stack = player.getHeldItemMainhand();
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
boolean f1 = Minecraft.getInstance().gameSettings.hideGUI;
IRenderTypeBuffer buffer = event.getBuffers();
MatrixStack matrix = event.getMatrixStack();
int light = event.getLight();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) && perspective == 0 && !f1)
{
@ -232,18 +248,20 @@ public class RenderEvents
BlockState state = ItemCarryonBlock.getBlockState(stack);
ItemStack tileStack = ItemCarryonBlock.getItemStack(stack);
GlStateManager.pushMatrix();
GlStateManager.scaled(2.5, 2.5, 2.5);
GlStateManager.translated(0, -0.6, -1);
GlStateManager.enableBlend();
matrix.push();
matrix.scale(2.5f, 2.5f, 2.5f);
matrix.translate(0, -0.5, -1);
RenderSystem.enableBlend();
RenderSystem.disableCull();
if (Settings.facePlayer.get() ? !isChest(block) : isChest(block))
{
GlStateManager.rotatef(180, 0, 1f, 0);
GlStateManager.rotatef(-8, 1f, 0, 0);
} else
matrix.rotate(Vector3f.YP.rotationDegrees(180));
matrix.rotate(Vector3f.XN.rotationDegrees(8));
}
else
{
GlStateManager.rotatef(8, 1f, 0, 0);
matrix.rotate(Vector3f.XP.rotationDegrees(8));
}
IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : (tileStack.isEmpty() ? Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state) : Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(tileStack, world, player));
@ -251,9 +269,8 @@ public class RenderEvents
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rotation = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scaled = ScriptParseHelper.getscaled(carryOverride.getRenderscaled());
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride);
Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
if (b != null)
{
@ -261,246 +278,323 @@ public class RenderEvents
s.setTag(carryOverride.getRenderNBT());
model = Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(s, world, player);
}
GlStateManager.translated(translation[0], translation[1], translation[2]);
GlStateManager.rotatef((float) rotation[0], 1, 0, 0);
GlStateManager.rotatef((float) rotation[1], 0, 1, 0);
GlStateManager.rotatef((float) rotation[2], 0, 0, 1);
GlStateManager.scaled(scaled[0], scaled[1], scaled[2]);
}
int i = this.getBrightnessForRender(Minecraft.getInstance().player);
int j = i % 65536;
int k = i / 65536;
GLX.glMultiTexCoord2f(GLX.GL_TEXTURE1, j, k);
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.setLightmapDisabled(false);
Minecraft.getInstance().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
if (ModelOverridesHandler.hasCustomOverrideModel(state, tag))
{
Object override = ModelOverridesHandler.getOverrideObject(state, tag);
if (override instanceof ItemStack)
{
Minecraft.getInstance().getItemRenderer().renderItem((ItemStack) override, model);
} else
{
Minecraft.getInstance().getItemRenderer().renderItem(tileStack.isEmpty() ? stack : tileStack, model);
}
} else
{
Minecraft.getInstance().getItemRenderer().renderItem(tileStack.isEmpty() ? stack : tileStack, model);
}
this.setLightmapDisabled(true);
CarryRenderHelper.renderItem(state, tag, stack, tileStack, matrix, buffer, light, model);
if (perspective == 0)
{
event.setCanceled(true);
}
GlStateManager.disableBlend();
GlStateManager.scaled(1, 1, 1);
GlStateManager.popMatrix();
RenderSystem.enableCull();
RenderSystem.disableBlend();
matrix.pop();
}
}
@SuppressWarnings("deprecation")
@OnlyIn(Dist.CLIENT)
private int getBrightnessForRender(PlayerEntity player)
{
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(MathHelper.floor(player.posX), 0, MathHelper.floor(player.posZ));
if (player.world.isBlockLoaded(blockpos$mutableblockpos))
{
blockpos$mutableblockpos.setY(MathHelper.floor(player.posY + player.getEyeHeight()));
return player.world.getCombinedLight(blockpos$mutableblockpos, 0);
} else
{
return 0;
}
}
@OnlyIn(Dist.CLIENT)
private void setLightmapDisabled(boolean disabled)
{
GlStateManager.activeTexture(GLX.GL_TEXTURE1);
if (disabled)
{
GlStateManager.disableTexture();;
} else
{
GlStateManager.enableTexture();
}
GlStateManager.activeTexture(GLX.GL_TEXTURE0);
}
/*
* Renders the Block in Third Person
* Render blocks and entities in third person
*/
@SuppressWarnings("deprecation")
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void onPlayerRenderPost(RenderPlayerEvent.Post event)
public void onRenderWorld(RenderWorldLastEvent event)
{
World world = Minecraft.getInstance().world;
PlayerEntity player = event.getPlayer();
// ClientPlayerEntity clientPlayer = Minecraft.getInstance().player;
ItemStack stack = player.getHeldItemMainhand();
float partialticks = event.getPartialRenderTick();
float partialticks = event.getPartialTicks();
Impl buffer = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer());
MatrixStack matrix = event.getMatrixStack();
int light = 0;
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
EntityRendererManager manager = Minecraft.getInstance().getRenderManager();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack))
RenderSystem.enableBlend();
RenderSystem.disableCull();
RenderSystem.disableDepthTest();
for (PlayerEntity player : world.getPlayers())
{
Block block = ItemCarryonBlock.getBlock(stack);
BlockState state = ItemCarryonBlock.getBlockState(stack);
CompoundNBT tag = ItemCarryonBlock.getTileData(stack);
ItemStack tileItem = ItemCarryonBlock.getItemStack(stack);
if (perspective == 0 && player == Minecraft.getInstance().player)
continue;
float rotation = 0f;
light = Minecraft.getInstance().getRenderManager().getPackedLight(player, partialticks);
ItemStack stack = player.getHeldItemMainhand();
if (player.getRidingEntity() != null && player.getRidingEntity() instanceof LivingEntity)
rotation = -(player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * partialticks);
else
rotation = -(player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks);
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
Vec3d cameraPos = Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView();
double xOffset = d0 - cameraPos.getX();
double yOffset = d1 - cameraPos.getY();
double zOffset = d2 - cameraPos.getZ();
GlStateManager.pushMatrix();
GlStateManager.translated(xOffset, yOffset, zOffset);
GlStateManager.scaled(0.6, 0.6, 0.6);
GlStateManager.enableBlend();
if (Settings.facePlayer.get() ? !isChest(block) : isChest(block))
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack))
{
GlStateManager.rotatef(rotation, 0, 1.0f, 0);
GlStateManager.translated(0, 1.6, 0.65);
if ((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && Minecraft.getInstance().gameSettings.thirdPersonView == 0)
GlStateManager.translated(0, 0, -0.4);
} else
{
GlStateManager.rotatef(rotation + 180, 0, 1.0f, 0);
GlStateManager.translated(0, 1.6, -0.65);
if ((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && Minecraft.getInstance().gameSettings.thirdPersonView == 0)
GlStateManager.translated(0, 0, 0.4);
}
Block block = ItemCarryonBlock.getBlock(stack);
BlockState state = ItemCarryonBlock.getBlockState(stack);
CompoundNBT tag = ItemCarryonBlock.getTileData(stack);
ItemStack tileItem = ItemCarryonBlock.getItemStack(stack);
if (doSneakCheck(player))
{
GlStateManager.translated(0, -0.3, 0);
}
applyBlockTransformations(player, partialticks, matrix, block);
IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : (tileItem.isEmpty() ? Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state) : Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(tileItem, world, player));
IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : (tileItem.isEmpty() ? Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state) : Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(tileItem, world, player));
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rot = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scaled = ScriptParseHelper.getscaled(carryOverride.getRenderscaled());
Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
if (b != null)
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
ItemStack s = new ItemStack(b, 1);
s.setTag(carryOverride.getRenderNBT());
model = Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(s, world, player);
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride);
Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
if (b != null)
{
ItemStack s = new ItemStack(b, 1);
s.setTag(carryOverride.getRenderNBT());
model = Minecraft.getInstance().getItemRenderer().getItemModelWithOverrides(s, world, player);
}
}
GlStateManager.translated(translation[0], translation[1], translation[2]);
GlStateManager.rotatef((float) rot[0], 1, 0, 0);
GlStateManager.rotatef((float) rot[1], 0, 1, 0);
GlStateManager.rotatef((float) rot[2], 0, 0, 1);
GlStateManager.scaled(scaled[0], scaled[1], scaled[2]);
Minecraft.getInstance().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
CarryRenderHelper.renderItem(state, tag, stack, tileItem, matrix, buffer, light, model);
buffer.finish();
matrix.pop();
drawArms(player, partialticks, matrix, buffer, light);
matrix.pop();
}
Minecraft.getInstance().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
if (ModelOverridesHandler.hasCustomOverrideModel(state, tag))
else if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
{
Object override = ModelOverridesHandler.getOverrideObject(state, tag);
Entity entity = ItemCarryonEntity.getEntity(stack, world);
if (override instanceof ItemStack)
if (entity != null)
{
Minecraft.getInstance().getItemRenderer().renderItem((ItemStack) override, model);
} else
{
Minecraft.getInstance().getItemRenderer().renderItem(tileItem.isEmpty() ? stack : tileItem, model);
applyEntityTransformations(player, partialticks, matrix, entity);
manager.setRenderShadow(false);
CarryOnOverride carryOverride = ScriptChecker.getOverride(player);
if (carryOverride != null)
{
CarryRenderHelper.performOverrideTransformation(matrix, carryOverride);
String entityname = carryOverride.getRenderNameEntity();
if (entityname != null)
{
Entity newEntity = null;
Optional<EntityType<?>> type = EntityType.byKey(entityname);
if (type.isPresent())
newEntity = type.get().create(world);
if (newEntity != null)
{
CompoundNBT nbttag = carryOverride.getRenderNBT();
if (nbttag != null)
newEntity.deserializeNBT(nbttag);
entity = newEntity;
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
entity.rotationPitch = 0.0f;
entity.prevRotationPitch = 0.0f;
}
}
}
if (entity instanceof LivingEntity)
((LivingEntity) entity).hurtTime = 0;
manager.renderEntityStatic(entity, 0, 0, 0, 0f, 0, matrix, buffer, light);
buffer.finish();
matrix.pop();
drawArms(player, partialticks, matrix, buffer, light);
manager.setRenderShadow(true);
matrix.pop();
}
} else
{
Minecraft.getInstance().getItemRenderer().renderItem(tileItem.isEmpty() ? stack : tileItem, model);
}
GlStateManager.disableBlend();
GlStateManager.scaled(1, 1, 1);
GlStateManager.popMatrix();
}
RenderSystem.enableDepthTest();
RenderSystem.enableCull();
RenderSystem.disableBlend();
}
private void applyGeneralTransformations(PlayerEntity player, float partialticks, MatrixStack matrix)
{
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
Quaternion playerrot = CarryRenderHelper.getExactBodyRotation(player, partialticks);
Vec3d playerpos = CarryRenderHelper.getExactPos(player, partialticks);
Vec3d cameraPos = Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView();
Vec3d offset = playerpos.subtract(cameraPos);
Pose pose = player.getPose();
matrix.push();
matrix.translate(offset.x, offset.y, offset.z);
if (perspective == 2)
playerrot.multiply(Vector3f.YP.rotationDegrees(180));
matrix.rotate(playerrot);
matrix.push();
matrix.scale(0.6f, 0.6f, 0.6f);
if (perspective == 2)
matrix.translate(0, 0, -1.35);
if (doSneakCheck(player))
{
matrix.translate(0, -0.4, 0);
}
if (pose == Pose.SWIMMING)
{
float f = player.getSwimAnimation(partialticks);
float f3 = player.isInWater() ? -90.0F - player.rotationPitch : -90.0F;
float f4 = MathHelper.lerp(f, 0.0F, f3);
if (perspective == 2)
{
matrix.translate(0, 0, 1.35);
matrix.rotate(Vector3f.XP.rotationDegrees(f4));
}
else
matrix.rotate(Vector3f.XN.rotationDegrees(f4));
matrix.translate(0, -1.5, -1.848);
if (perspective == 2)
matrix.translate(0, 0, 2.38);
}
if (pose == Pose.FALL_FLYING)
{
float f1 = (float) player.getTicksElytraFlying() + partialticks;
float f2 = MathHelper.clamp(f1 * f1 / 100.0F, 0.0F, 1.0F);
if (!player.isSpinAttacking())
{
if (perspective == 2)
matrix.translate(0, 0, 1.35);
if (perspective == 2)
matrix.rotate(Vector3f.XP.rotationDegrees(f2 * (-90.0F - player.rotationPitch)));
else
matrix.rotate(Vector3f.XN.rotationDegrees(f2 * (-90.0F - player.rotationPitch)));
}
Vec3d vec3d = player.getLook(partialticks);
Vec3d vec3d1 = player.getMotion();
double d0 = Entity.horizontalMag(vec3d1);
double d1 = Entity.horizontalMag(vec3d);
if (d0 > 0.0D && d1 > 0.0D)
{
double d2 = (vec3d1.x * vec3d.x + vec3d1.z * vec3d.z) / (Math.sqrt(d0) * Math.sqrt(d1));
double d3 = vec3d1.x * vec3d.z - vec3d1.z * vec3d.x;
matrix.rotate(Vector3f.YP.rotation((float) (Math.signum(d3) * Math.acos(d2))));
}
if (perspective != 2)
matrix.translate(0, 0, -1.35);
matrix.translate(0, -0.2, 0);
}
matrix.translate(0, 1.6, 0.65);
}
private void applyBlockTransformations(PlayerEntity player, float partialticks, MatrixStack matrix, Block block)
{
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
applyGeneralTransformations(player, partialticks, matrix);
if (Settings.facePlayer.get() ? !isChest(block) : isChest(block))
{
if ((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && perspective == 0)
matrix.translate(0, 0, -0.4);
matrix.rotate(Vector3f.YP.rotationDegrees(180));
}
else
{
if ((ModList.get().isLoaded("realrender") || ModList.get().isLoaded("rfpr")) && perspective == 0)
matrix.translate(0, 0, 0.4);
}
}
private void applyEntityTransformations(PlayerEntity player, float partialticks, MatrixStack matrix, Entity entity)
{
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
Pose pose = player.getPose();
applyGeneralTransformations(player, partialticks, matrix);
if(perspective == 2)
matrix.translate(0, -1.6, 0.65);
else
matrix.translate(0, -1.6, -0.65);
matrix.scale(1.666f, 1.666f, 1.666f);
float height = entity.getHeight();
float width = entity.getWidth();
float multiplier = height * width;
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
entity.rotationPitch = 0.0f;
entity.prevRotationPitch = 0.0f;
if (perspective == 2)
matrix.rotate(Vector3f.YP.rotationDegrees(180));
matrix.scale((10 - multiplier) * 0.08f, (10 - multiplier) * 0.08f, (10 - multiplier) * 0.08f);
matrix.translate(0.0, height / 2 + -(height / 2) + 1, width - 0.1 < 0.7 ? width - 0.1 + (0.7 - (width - 0.1)) : width - 0.1);
if (pose == Pose.SWIMMING || pose == Pose.FALL_FLYING)
{
matrix.rotate(Vector3f.XN.rotationDegrees(90));
matrix.translate(0, -0.2 * height, 0);
if(pose == Pose.FALL_FLYING)
matrix.translate(0, 0 , 0.2);
}
}
/*
* Renders correct arm rotation
*/
@OnlyIn(Dist.CLIENT)
@SubscribeEvent(priority = EventPriority.HIGH)
public void onEvent(RenderPlayerEvent.Post event)
public void drawArms(PlayerEntity player, float partialticks, MatrixStack matrix, IRenderTypeBuffer buffer, int light)
{
int perspective = Minecraft.getInstance().gameSettings.thirdPersonView;
Pose pose = player.getPose();
if (!Settings.renderArms.get())
return;
if (pose == Pose.SWIMMING || pose == Pose.FALL_FLYING)
return;
if (handleMobends() && !ModList.get().isLoaded("obfuscate"))
{
PlayerEntity player = event.getPlayer();
float partialticks = event.getPartialRenderTick();
ItemStack stack = player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
{
PlayerModel<AbstractClientPlayerEntity> model = event.getRenderer().getEntityModel();
float rotation = 0;
if (player.getRidingEntity() != null && player.getRidingEntity() instanceof LivingEntity)
rotation = (player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * partialticks);
else
rotation = (player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks);
PlayerModel<AbstractClientPlayerEntity> model = getPlayerModel((AbstractClientPlayerEntity) player);
AbstractClientPlayerEntity aplayer = (AbstractClientPlayerEntity) player;
ResourceLocation skinLoc = aplayer.getLocationSkin();
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
Vec3d cameraPos = Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView();
double xOffset = d0 - cameraPos.getX();
double yOffset = d1 - cameraPos.getY();
double zOffset = d2 - cameraPos.getZ();
GlStateManager.pushMatrix();
GlStateManager.translated(xOffset, yOffset, zOffset);
matrix.push();
if (perspective == 2)
matrix.rotate(Vector3f.YP.rotationDegrees(180));
Minecraft.getInstance().getTextureManager().bindTexture(skinLoc);
CarryOnOverride overrider = ScriptChecker.getOverride(player);
IVertexBuilder builder = buffer.getBuffer(RenderType.getEntityCutout(skinLoc));
if (overrider != null)
{
double[] rotLeft = null;
double[] rotRight = null;
float[] rotLeft = null;
float[] rotRight = null;
if (overrider.getRenderRotationLeftArm() != null)
rotLeft = ScriptParseHelper.getXYZArray(overrider.getRenderRotationLeftArm());
if (overrider.getRenderRotationRightArm() != null)
@ -511,32 +605,38 @@ public class RenderEvents
if (renderLeft && rotLeft != null)
{
renderArmPost(model.bipedLeftArm, (float) rotLeft[0], (float) rotLeft[2], rotation, false, doSneakCheck(player));
renderArmPost(model.bipedLeftArmwear, (float) rotLeft[0], (float) rotLeft[2], rotation, false, doSneakCheck(player));
} else if (renderLeft)
renderArmPost(model.bipedLeftArm, (float) rotLeft[0], (float) rotLeft[2], false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedLeftArmwear, (float) rotLeft[0], (float) rotLeft[2], false, doSneakCheck(player), light, matrix, builder);
}
else if (renderLeft)
{
renderArmPost(model.bipedLeftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation, false, doSneakCheck(player));
renderArmPost(model.bipedLeftArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation, false, doSneakCheck(player));
renderArmPost(model.bipedLeftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedLeftArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
}
if (renderRight && rotRight != null)
{
renderArmPost(model.bipedRightArm, (float) rotRight[0], (float) rotRight[2], rotation, true, doSneakCheck(player));
renderArmPost(model.bipedRightArmwear, (float) rotRight[0], (float) rotRight[2], rotation, true, doSneakCheck(player));
} else if (renderRight)
{
renderArmPost(model.bipedRightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation, true, doSneakCheck(player));
renderArmPost(model.bipedRightArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation, true, doSneakCheck(player));
renderArmPost(model.bipedRightArm, (float) rotRight[0], (float) rotRight[2], true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedRightArmwear, (float) rotRight[0], (float) rotRight[2], true, doSneakCheck(player), light, matrix, builder);
}
else if (renderRight)
{
renderArmPost(model.bipedRightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedRightArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
}
} else
{
renderArmPost(model.bipedRightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation, true, doSneakCheck(player));
renderArmPost(model.bipedLeftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation, false, doSneakCheck(player));
renderArmPost(model.bipedLeftArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), rotation, false, doSneakCheck(player));
renderArmPost(model.bipedRightArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), rotation, true, doSneakCheck(player));
}
GlStateManager.popMatrix();
else
{
renderArmPost(model.bipedRightArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedLeftArm, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedLeftArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? 0.15f : 0), false, doSneakCheck(player), light, matrix, builder);
renderArmPost(model.bipedRightArmwear, 2.0F + (doSneakCheck(player) ? 0f : 0.2f) - (stack.getItem() == RegistrationHandler.itemEntity ? 0.3f : 0), (stack.getItem() == RegistrationHandler.itemEntity ? -0.15f : 0), true, doSneakCheck(player), light, matrix, builder);
}
if (buffer instanceof Impl)
((Impl) buffer).finish();
matrix.pop();
}
}
}
@ -554,8 +654,9 @@ public class RenderEvents
if (handleMobends() && !ModList.get().isLoaded("obfuscate"))
{
PlayerEntity player = event.getPlayer();
Pose pose = player.getPose();
ItemStack stack = player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack))
if (pose != Pose.SWIMMING && pose != Pose.FALL_FLYING && !stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemCarryonBlock.hasTileData(stack) || stack.getItem() == RegistrationHandler.itemEntity && ItemCarryonEntity.hasEntityData(stack)))
{
PlayerModel<AbstractClientPlayerEntity> model = event.getRenderer().getEntityModel();
@ -577,7 +678,8 @@ public class RenderEvents
renderArmPre(model.bipedLeftArm);
renderArmPre(model.bipedLeftArmwear);
}
} else
}
else
{
renderArmPre(model.bipedRightArm);
renderArmPre(model.bipedLeftArm);
@ -589,18 +691,14 @@ public class RenderEvents
}
@OnlyIn(Dist.CLIENT)
public void renderArmPost(RendererModel arm, float x, float z, float rotation, boolean right, boolean sneaking)
private void renderArmPost(ModelRenderer arm, float x, float z, boolean right, boolean sneaking, int light, MatrixStack matrix, IVertexBuilder builder)
{
arm.isHidden = false;
matrix.push();
arm.showModel = true;
if (right)
{
arm.rotationPointZ = -MathHelper.sin((float) Math.toRadians(rotation)) * 4.75F;
arm.rotationPointX = -MathHelper.cos((float) Math.toRadians(rotation)) * 4.75F;
} else
{
arm.rotationPointZ = MathHelper.sin((float) Math.toRadians(rotation)) * 4.75F;
arm.rotationPointX = MathHelper.cos((float) Math.toRadians(rotation)) * 4.75F;
}
matrix.translate(0.015, 0, 0);
else
matrix.translate(-0.015, 0, 0);
if (!sneaking)
arm.rotationPointY = 20;
@ -608,16 +706,17 @@ public class RenderEvents
arm.rotationPointY = 15;
arm.rotateAngleX = (float) x;
arm.rotateAngleY = (float) -Math.toRadians(rotation);
arm.rotateAngleZ = (float) z;
arm.renderWithRotation(0.0625F);
arm.rotateAngleY = (float) 0;
arm.rotateAngleZ = (float) -z;
arm.render(matrix, builder, light, 655360);
arm.rotationPointY = 2;
matrix.pop();
}
@OnlyIn(Dist.CLIENT)
public void renderArmPre(RendererModel arm)
private void renderArmPre(ModelRenderer arm)
{
arm.isHidden = true;
arm.showModel = false;
}
public boolean handleMobends()
@ -638,12 +737,12 @@ public class RenderEvents
public static boolean doSneakCheck(PlayerEntity player)
{
if(player.abilities.isFlying)
if (player.abilities.isFlying)
return false;
return player.isSneaking();
return (player.isSneaking() || player.isCrouching());
}
public static boolean isChest(Block block)
{
return block == Blocks.CHEST || block == Blocks.ENDER_CHEST || block == Blocks.TRAPPED_CHEST;
@ -663,15 +762,16 @@ public class RenderEvents
return getRenderPlayer(player).getEntityModel();
}
@SubscribeEvent
@OnlyIn(Dist.CLIENT)
public void hideItems(RenderSpecificHandEvent event)
{
ItemStack stack = event.getItemStack();
if (stack != null && (stack.getItem() == RegistrationHandler.itemTile || stack.getItem() == RegistrationHandler.itemEntity))
{
event.setCanceled(true);
}
}
// @SubscribeEvent
// @OnlyIn(Dist.CLIENT)
// public void hideItems(RenderSpecificHandEvent event)
// {
// ItemStack stack = event.getItemStack();
//
// if (stack != null && (stack.getItem() == RegistrationHandler.itemTile ||
// stack.getItem() == RegistrationHandler.itemEntity))
// {
// event.setCanceled(true);
// }
// }
}

View File

@ -1,48 +0,0 @@
//package tschipp.carryon.client.gui;
//
//import java.util.List;
//
//import net.minecraft.client.gui.GuiButton;
//import net.minecraft.client.gui.GuiScreen;
//import net.minecraftforge.common.config.ConfigCategory;
//import net.minecraftforge.common.config.ConfigElement;
//import net.minecraftforge.common.config.Configuration;
//import net.minecraftforge.fml.client.config.GuiConfig;
//import net.minecraftforge.fml.client.config.IConfigElement;
//import tschipp.carryon.CarryOn;
//import tschipp.carryon.common.config.CarryOnConfig;
//
//public class GuiConfigCarryOn extends GuiConfig
//{
// private static final String LANG_PREFIX = CarryOn.MODID + ".category.";
//
// public GuiConfigCarryOn(GuiScreen parent) {
// super(parent, getConfigElements(), CarryOn.MODID, false, false, "Carry On Configuration");
// }
//
// private static List<IConfigElement> getConfigElements() {
//
// final Configuration configuration = CarryOnConfig.EventHandler.getConfiguration.get()();
//
// final ConfigCategory topLevelCategory = configuration.getCategory(Configuration.CATEGORY_GENERAL);
// topLevelCategory.getChildren()
// .forEach(configCategory -> configCategory.setLanguageKey(GuiConfigCarryOn.LANG_PREFIX + configCategory.getName()));
//
// return new ConfigElement(topLevelCategory).getChildElements();
// }
//
// @Override
// public void initGui() {
// super.initGui();
// }
//
// @Override
// public void drawScreen(int mouseX, int mouseY, float partialTicks) {
// super.drawScreen(mouseX, mouseY, partialTicks);
// }
//
// @Override
// protected void actionPerformed(GuiButton button) {
// super.actionPerformed(button);
// }
//}

View File

@ -1,49 +0,0 @@
//package tschipp.carryon.client.gui;
//
//import java.util.Set;
//
//import net.minecraft.client.Minecraft;
//import net.minecraft.client.gui.GuiScreen;
//import net.minecraftforge.fml.client.IModGuiFactory;
//
//public class GuiFactoryCarryOn implements IModGuiFactory
//{
// @Override
// public void initialize(Minecraft minecraftInstance) {
// // Do nothing
// }
//
// /*
// @Override
// public Class<? extends GuiScreen> mainConfigGuiClass() {
// return GuiConfigCarryOn.class;
// } */
//
// @Override
// public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
// return null;
// }
//
// /*
// @Override
// public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
// return null;
// } */
//
//
// @Override
// public boolean hasConfigGui()
// {
// return true;
// }
//
// @Override
// public GuiScreen createConfigGui(GuiScreen parentScreen)
// {
//
// return new GuiConfigCarryOn(parentScreen);
// }
//
//
//
//}

View File

@ -0,0 +1,71 @@
package tschipp.carryon.client.helper;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.Quaternion;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.math.Vec3d;
import tschipp.carryon.common.handler.ModelOverridesHandler;
import tschipp.carryon.common.helper.ScriptParseHelper;
import tschipp.carryon.common.scripting.CarryOnOverride;
public class CarryRenderHelper
{
public static Vec3d getExactPos(Entity entity, float partialticks)
{
return new Vec3d(entity.lastTickPosX + (entity.getPosX() - entity.lastTickPosX) * partialticks, entity.lastTickPosY + (entity.getPosY() - entity.lastTickPosY) * partialticks, entity.lastTickPosZ + (entity.getPosZ() - entity.lastTickPosZ) * partialticks);
}
public static float getExactBodyRotationDegrees(LivingEntity entity, float partialticks)
{
if (entity.getRidingEntity() != null && entity.getRidingEntity() instanceof LivingEntity)
return -(entity.prevRotationYawHead + (entity.rotationYawHead - entity.prevRotationYawHead) * partialticks);
else
return -(entity.prevRenderYawOffset + (entity.renderYawOffset - entity.prevRenderYawOffset) * partialticks);
}
public static Quaternion getExactBodyRotation(LivingEntity entity, float partialticks)
{
return Vector3f.YP.rotationDegrees(getExactBodyRotationDegrees(entity, partialticks));
}
public static void performOverrideTransformation(MatrixStack matrix, CarryOnOverride override)
{
float[] translation = ScriptParseHelper.getXYZArray(override.getRenderTranslation());
float[] rotation = ScriptParseHelper.getXYZArray(override.getRenderRotation());
float[] scaled = ScriptParseHelper.getScaled(override.getRenderScaled());
matrix.translate(translation[0], translation[1], translation[2]);
Quaternion rot = Vector3f.XP.rotationDegrees(rotation[0]);
rot.multiply(Vector3f.YP.rotationDegrees(rotation[1]));
rot.multiply(Vector3f.ZP.rotationDegrees(rotation[2]));
matrix.rotate(rot);
matrix.scale(scaled[0], scaled[1], scaled[2]);
}
public static void renderItem(BlockState state, CompoundNBT tag, ItemStack stack, ItemStack tileStack, MatrixStack matrix, IRenderTypeBuffer buffer, int light, IBakedModel model)
{
if (ModelOverridesHandler.hasCustomOverrideModel(state, tag))
{
Object override = ModelOverridesHandler.getOverrideObject(state, tag);
if (override instanceof ItemStack)
{
Minecraft.getInstance().getItemRenderer().renderItem((ItemStack) override, TransformType.NONE, false, matrix, buffer, light, 0xFFFFFF, model); //Note: I'm not sure what the second to last argument does, but it seems to work like this
return;
}
}
Minecraft.getInstance().getItemRenderer().renderItem(tileStack.isEmpty() ? stack : tileStack, TransformType.NONE, false, matrix, buffer, light, 0xFFFFFF, model);
}
}

View File

@ -62,7 +62,7 @@ public class Configs {
}
@SubscribeEvent
public static void onChange(final ModConfig.ConfigReloading event)
public static void onChange(final ModConfig.Reloading event)
{
if(event.getConfig().getModId().equals(CarryOn.MODID))
{
@ -344,7 +344,10 @@ public class Configs {
"enderstorage:*",
"betterstorage:*",
"practicallogistics2:*",
"wearablebackpacks:*"
"wearablebackpacks:*",
"rftools:screen",
"rftools:creative_screen",
}), (obj) -> obj instanceof String ? true : false);
@ -366,7 +369,9 @@ public class Configs {
"animania:hedgehog*",
"animania:cart",
"animania:wagon",
"mynko:*"
"mynko:*",
"pixelmon:*",
"mocreatures:*"
}), (obj) -> obj instanceof String ? true : false);
forbiddenStacking = s

View File

@ -132,7 +132,7 @@ public class ItemEntityEvents
if (entity instanceof LivingEntity)
((LivingEntity) entity).setHealth(0);
entity.posY=0;
entity.setPosition(entity.getPosX(), 0, entity.getPosZ());
entity.remove();
player.setHeldItem(Hand.MAIN_HAND, stack);
event.setCanceled(true);
@ -172,16 +172,16 @@ public class ItemEntityEvents
if (distance < 6)
{
double tempX = entity.posX;
double tempY = entity.posY;
double tempZ = entity.posZ;
double tempX = entity.getPosX();
double tempY = entity.getPosY();
double tempZ = entity.getPosZ();
entityHeld.setPosition(tempX, tempY + 2.6, tempZ);
world.addEntity(entityHeld);
entityHeld.startRiding(topEntity, false);
entityHeld.setPositionAndUpdate(tempX, tempY, tempZ);
} else
{
entityHeld.setPosition(entity.posX, entity.posY, entity.posZ);
entityHeld.setPosition(entity.getPosX(), entity.getPosY(), entity.getPosZ());
world.addEntity(entityHeld);
entityHeld.startRiding(topEntity, false);
}
@ -191,16 +191,16 @@ public class ItemEntityEvents
ItemEvents.sendPacket(player, 9, 0);
event.setCanceled(true);
event.setCancellationResult(ActionResultType.FAIL);
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_HORSE_SADDLE, SoundCategory.PLAYERS, 0.5F, 1.5F);
world.playSound(null, player.getPosX(), player.getPosY(), player.getPosZ(), SoundEvents.ENTITY_HORSE_SADDLE, SoundCategory.PLAYERS, 0.5F, 1.5F);
} else
{
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_NOTE_BLOCK_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
world.playSound(null, player.getPosX(), player.getPosY(), player.getPosZ(), SoundEvents.BLOCK_NOTE_BLOCK_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
return;
}
}
} else
{
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_NOTE_BLOCK_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
world.playSound(null, player.getPosX(), player.getPosY(), player.getPosZ(), SoundEvents.BLOCK_NOTE_BLOCK_BASS, SoundCategory.PLAYERS, 0.5F, 1.5F);
return;
}
}

View File

@ -142,7 +142,7 @@ public class ItemEvents
eitem.setItem(ItemStack.EMPTY);
}
BlockPos pos = new BlockPos(Math.floor(eitem.posX), Math.floor(eitem.posY), Math.floor(eitem.posZ));
BlockPos pos = new BlockPos(Math.floor(eitem.getPosX()), Math.floor(eitem.getPosY()), Math.floor(eitem.getPosZ()));
if (positions.containsKey(pos))
{
event.setCanceled(true);
@ -275,7 +275,7 @@ public class ItemEvents
if (!player.world.isRemote)
{
player.setHeldItem(Hand.MAIN_HAND, ItemStack.EMPTY);
ItemEntity item = new ItemEntity(player.world, player.posX, player.posY, player.posZ, stack);
ItemEntity item = new ItemEntity(player.world, player.getPosX(), player.getPosY(), player.getPosZ(), stack);
sendPacket(player, 9, 0);
player.world.addEntity(item);
}
@ -499,12 +499,12 @@ public class ItemEvents
if (slotBlock != -1)
{
ItemStack dropped = player.inventory.removeStackFromSlot(slotBlock);
item = new ItemEntity(player.world, player.posX, player.posY, player.posZ, dropped);
item = new ItemEntity(player.world, player.getPosX(), player.getPosY(), player.getPosZ(), dropped);
}
if (slotEntity != -1)
{
ItemStack dropped = player.inventory.removeStackFromSlot(slotEntity);
item = new ItemEntity(player.world, player.posX, player.posY, player.posZ, dropped);
item = new ItemEntity(player.world, player.getPosX(), player.getPosY(), player.getPosZ(), dropped);
}
if (item != null)
{
@ -529,7 +529,7 @@ public class ItemEvents
}
@SubscribeEvent
public void onConfigChanged(ModConfig.ConfigReloading event)
public void onConfigChanged(ModConfig.Reloading event)
{
if (event.getConfig().getModId().equals(CarryOn.MODID))
{
@ -555,7 +555,7 @@ public class ItemEvents
{
if (player instanceof ServerPlayerEntity)
{
CarryOn.network.send(PacketDistributor.NEAR.with(() -> new TargetPoint(player.posX, player.posY, player.posZ, 128, player.world.getDimension().getType())), new CarrySlotPacket(currentItem, player.getEntityId(), hash));
CarryOn.network.send(PacketDistributor.NEAR.with(() -> new TargetPoint(player.getPosX(), player.getPosY(), player.getPosZ(), 128, player.world.getDimension().getType())), new CarrySlotPacket(currentItem, player.getEntityId(), hash));
CarryOn.network.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) player), new CarrySlotPacket(currentItem, player.getEntityId(), hash));
if (currentItem >= 9)

View File

@ -14,7 +14,7 @@ public class KeyboardCallbackWrapper
public void setup(Minecraft mc)
{
oldCallback = GLFW.glfwSetKeyCallback(mc.mainWindow.getHandle(), this::keyCallback);
oldCallback = GLFW.glfwSetKeyCallback(mc.getMainWindow().getHandle(), this::keyCallback);
}
private void keyCallback(long window, int key, int scancode, int action, int mods)

View File

@ -88,9 +88,9 @@ public class ScriptParseHelper
return matching;
}
public static double[] getXYZArray(String s)
public static float[] getXYZArray(String s)
{
double[] d = new double[3];
float[] d = new float[3];
d[0] = getValueFromString(s, "x");
d[1] = getValueFromString(s, "y");
d[2] = getValueFromString(s, "z");
@ -99,17 +99,17 @@ public class ScriptParseHelper
}
public static double[] getscaled(String s)
public static float[] getScaled(String s)
{
double[] d = new double[3];
d[0] = getscaledValueFromString(s, "x");
d[1] = getscaledValueFromString(s, "y");
d[2] = getscaledValueFromString(s, "z");
float[] d = new float[3];
d[0] = getScaledValueFromString(s, "x");
d[1] = getScaledValueFromString(s, "y");
d[2] = getScaledValueFromString(s, "z");
return d;
}
public static double getscaledValueFromString(String toGetFrom, String key)
public static float getScaledValueFromString(String toGetFrom, String key)
{
if(toGetFrom == null)
return 1;
@ -119,12 +119,12 @@ public class ScriptParseHelper
{
if (string.contains(key) && string.contains("="))
{
double numb = 1;
float numb = 1;
string = string.replace(key + "=", "");
try
{
numb = Double.parseDouble(string);
numb = Float.parseFloat(string);
}
catch (Exception e)
{
@ -188,7 +188,7 @@ public class ScriptParseHelper
return x && y && z;
}
public static double getValueFromString(String toGetFrom, String key)
public static float getValueFromString(String toGetFrom, String key)
{
if(toGetFrom == null)
return 0;
@ -198,12 +198,12 @@ public class ScriptParseHelper
{
if (string.contains(key) && string.contains("="))
{
double numb = 0;
float numb = 0;
string = string.replace(key + "=", "");
try
{
numb = Double.parseDouble(string);
numb = Float.parseFloat(string);
}
catch (Exception e)
{

View File

@ -15,7 +15,7 @@ public class ScrollCallbackWrapper
public void setup(Minecraft mc)
{
oldCallback = GLFW.glfwSetScrollCallback(mc.mainWindow.getHandle(), this::scrollCallback);
oldCallback = GLFW.glfwSetScrollCallback(mc.getMainWindow().getHandle(), this::scrollCallback);
}
private void scrollCallback(long window, double xoffset, double yoffset)

View File

@ -19,6 +19,11 @@ import net.minecraft.item.ItemUseContext;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.Effects;
import net.minecraft.state.BooleanProperty;
import net.minecraft.state.DirectionProperty;
import net.minecraft.state.EnumProperty;
import net.minecraft.state.IProperty;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
@ -80,6 +85,7 @@ public class ItemCarryonBlock extends Item
return new StringTextComponent("");
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public ActionResultType onItemUse(ItemUseContext context)
{
@ -117,8 +123,27 @@ public class ItemCarryonBlock extends Item
{
if (player.canPlayerEdit(pos, facing, stack) && world.isBlockModifiable(player, pos2))
{
BlockState actualState = containedblock.getStateForPlacement(new BlockItemUseContext(context));
BlockState placementState = containedblock.getStateForPlacement(new BlockItemUseContext(context));
BlockState actualState = containedstate;
for (IProperty<?> prop : placementState.getValues().keySet())
{
if (prop instanceof DirectionProperty)
actualState = actualState.with((DirectionProperty) prop, placementState.get((DirectionProperty) prop));
else if (prop == BlockStateProperties.WATERLOGGED)
actualState = actualState.with((BooleanProperty) prop, placementState.get((BooleanProperty) prop));
else if(prop instanceof EnumProperty<?>)
{
Object value = placementState.get(prop);
if(value instanceof Direction.Axis)
{
actualState = actualState.with((EnumProperty)prop, (Direction.Axis)value);
}
}
}
BlockSnapshot snapshot = new BlockSnapshot(world, pos2, containedstate);
EntityPlaceEvent event = new EntityPlaceEvent(snapshot, world.getBlockState(pos), player);
MinecraftForge.EVENT_BUS.post(event);
@ -180,7 +205,8 @@ public class ItemCarryonBlock extends Item
}
}
} catch (Exception e)
}
catch (Exception e)
{
e.printStackTrace();
@ -188,7 +214,7 @@ public class ItemCarryonBlock extends Item
{
CarryOn.LOGGER.info("Block: " + ItemCarryonBlock.getBlock(stack));
CarryOn.LOGGER.info("BlockState: " + ItemCarryonBlock.getBlockState(stack));
// CarryOn.LOGGER.info("Meta: " + ItemTile.getMeta(stack));
// CarryOn.LOGGER.info("Meta: " + ItemTile.getMeta(stack));
CarryOn.LOGGER.info("ItemStack: " + ItemCarryonBlock.getItemStack(stack));
if (ModelOverridesHandler.hasCustomOverrideModel(ItemCarryonBlock.getBlockState(stack), ItemCarryonBlock.getTileData(stack)))
@ -222,7 +248,8 @@ public class ItemCarryonBlock extends Item
((LivingEntity) entity).addPotionEffect(new EffectInstance(Effects.SLOWNESS, 1, potionLevel(stack), false, false));
}
} else
}
else
{
stack = ItemStack.EMPTY;
}
@ -253,11 +280,12 @@ public class ItemCarryonBlock extends Item
tag.put(TILE_DATA_KEY, chest);
// ItemStack drop = new ItemStack(state.getBlock().getItemDropped(state, itemRand, 0), 1, state.getBlock().damageDropped(state));
// ItemStack drop = new ItemStack(state.getBlock().getItemDropped(state,
// itemRand, 0), 1, state.getBlock().damageDropped(state));
tag.putString("block", state.getBlock().getRegistryName().toString());
// Item item = Item.getItemFromBlock(state.getBlock());
// tag.setInt("meta", drop.getItemDamage());
// Item item = Item.getItemFromBlock(state.getBlock());
// tag.setInt("meta", drop.getItemDamage());
tag.putInt("stateid", Block.getStateId(state));
stack.setTag(tag);
return true;
@ -295,16 +323,16 @@ public class ItemCarryonBlock extends Item
return Blocks.AIR;
}
// public static int getMeta(ItemStack stack)
// {
// if (stack.hasTag())
// {
// CompoundNBT tag = stack.getTag();
// int meta = tag.getInt("meta");
// return meta;
// }
// return 0;
// }
// public static int getMeta(ItemStack stack)
// {
// if (stack.hasTag())
// {
// CompoundNBT tag = stack.getTag();
// int meta = tag.getInt("meta");
// return meta;
// }
// return 0;
// }
public static ItemStack getItemStack(ItemStack stack)
{
@ -335,16 +363,16 @@ public class ItemCarryonBlock extends Item
return false;
}
// private boolean equal(Object[] a, Object[] b)
// {
// if (a.length != b.length)
// return false;
//
// List lA = Arrays.asList(a);
// List lB = Arrays.asList(b);
//
// return lA.containsAll(lB);
// }
// private boolean equal(Object[] a, Object[] b)
// {
// if (a.length != b.length)
// return false;
//
// List lA = Arrays.asList(a);
// List lB = Arrays.asList(b);
//
// return lA.containsAll(lB);
// }
private int potionLevel(ItemStack stack)
{

View File

@ -1,5 +1,6 @@
package tschipp.carryon.common.item;
import java.lang.reflect.Method;
import java.util.Optional;
import javax.annotation.Nonnull;
@ -26,6 +27,7 @@ import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import tschipp.carryon.CarryOn;
import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.Configs.Settings;
@ -33,6 +35,14 @@ import tschipp.carryon.common.event.ItemEvents;
public class ItemCarryonEntity extends Item {
private static final Method initGoals;
static
{
initGoals = ObfuscationReflectionHelper.findMethod(MobEntity.class, "func_184651_r");
initGoals.setAccessible(true);
}
public static final String ENTITY_DATA_KEY = "entityData";
public ItemCarryonEntity() {
@ -177,7 +187,16 @@ public class ItemCarryonEntity extends Item {
}
if (entity != null)
entity.deserializeNBT(e);
{
try
{
initGoals.invoke(entity);
entity.deserializeNBT(e);
}
catch (Exception e1)
{
}
}
return entity;
}

View File

@ -492,7 +492,7 @@ public class CarryOnOverride
return renderRotation;
}
public String getRenderscaled()
public String getRenderScaled()
{
return renderscaled;
}

View File

@ -144,7 +144,7 @@ public class ScriptReader
JsonObject nbt = (JsonObject) render.get("nbt");
JsonElement translation = render.get("translation");
JsonElement rotation = render.get("rotation");
JsonElement scaled = render.get("scaled");
JsonElement scaled = render.get("scale");
JsonElement rotationLeftArm = render.get("rotation_left_arm");
JsonElement rotationRightArm = render.get("rotation_right_arm");
JsonElement renderLeftArm = render.get("render_left_arm");

View File

@ -10,7 +10,7 @@ public class ServerProxy implements IProxy
@Override
public void setup(FMLCommonSetupEvent event)
{
}
@Override

View File

@ -1,25 +1,24 @@
modLoader="javafml"
loaderVersion="[13,)"
loaderVersion="[31,)"
issueTrackerURL="https://github.com/Tschipp/CarryOn/issues"
logoFile="logo.png"
license="GNU LGPLv3"
[[mods]]
modId="carryon"
version="1.12.2"
version="${file.jarVersion}"
displayName="Carry On"
description='''Carry On is a simple mod that improves game interaction by allowing players to pick up, carry, and place single block Tile Entities using only their empty hands.'''
authors="Tschipp, Purplicious_Cow, cy4n" #mandatory
displayURL="https://minecraft.curseforge.com/projects/carry-on" #mandatory
updateJSONURL="https://gist.githubusercontent.com/Tschipp/dccadee7c90d7a34e6e76a35d9d6fa2e/raw/" #mandatory
[[dependencies.carryon]] #optional
# the modid of the dependency
modId="forge" #mandatory
# Does this dependency have to exist - if not, ordering below must be specified
mandatory=true #mandatory
# The version range of the dependency
versionRange="[14.23.2.0,)" #mandatory
versionRange="[31.2.36,)" #mandatory
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
ordering="NONE"
# Side this dependency is applied on - BOTH, CLIENT or SERVER
@ -28,6 +27,6 @@ logoFile="logo.png"
[[dependencies.carryon]]
modId="minecraft"
mandatory=true
versionRange="[1.14.4,1.15)"
versionRange="[1.15.2,1.16)"
ordering="NONE"
side="BOTH"