Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: IzzelAliz/Arclight
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.15/1.0.14
Choose a base ref
...
head repository: IzzelAliz/Arclight
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1.15
Choose a head ref

Commits on Dec 5, 2020

  1. Update download host

    IzzelAliz committed Dec 5, 2020
    Copy the full SHA
    507b940 View commit details
  2. Copy the full SHA
    35b011e View commit details
  3. Copy the full SHA
    4b65076 View commit details

Commits on Dec 7, 2020

  1. Allow disabling DFU

    IzzelAliz committed Dec 7, 2020
    Copy the full SHA
    ac877e2 View commit details

Commits on Dec 11, 2020

  1. Copy the full SHA
    2ead6e3 View commit details
  2. Update forge to 31.2.47

    IzzelAliz committed Dec 11, 2020
    Copy the full SHA
    1610f90 View commit details
  3. Copy the full SHA
    c73b3c3 View commit details
  4. Release 1.0.15

    IzzelAliz committed Dec 11, 2020
    Copy the full SHA
    17f4f6d View commit details

Commits on Dec 13, 2020

  1. Copy the full SHA
    f3d0a2c View commit details

Commits on Dec 18, 2020

  1. Fix AoA3 teleport

    IzzelAliz committed Dec 18, 2020
    Copy the full SHA
    b1d545d View commit details

Commits on Dec 20, 2020

  1. Copy the full SHA
    e7ec410 View commit details

Commits on Dec 24, 2020

  1. Copy the full SHA
    5d4d313 View commit details

Commits on Dec 25, 2020

  1. Copy the full SHA
    88301c4 View commit details

Commits on Dec 26, 2020

  1. Copy the full SHA
    9cdc38d View commit details
  2. Copy the full SHA
    cbf89e6 View commit details

Commits on Dec 27, 2020

  1. Copy the full SHA
    5699c51 View commit details
  2. Copy the full SHA
    5c0b935 View commit details
  3. Copy the full SHA
    04a8156 View commit details

Commits on Dec 29, 2020

  1. Copy the full SHA
    69806ab View commit details

Commits on Jan 3, 2021

  1. Revert "Temp workaround for Mixin#451"

    This reverts commit cbf89e6
    IzzelAliz committed Jan 3, 2021
    Copy the full SHA
    76c3cb9 View commit details
  2. Copy the full SHA
    3bbf91b View commit details

Commits on Jan 8, 2021

  1. Remap package name (#120)

    IzzelAliz committed Jan 8, 2021
    Copy the full SHA
    1b7f2b9 View commit details

Commits on Jan 10, 2021

  1. Copy the full SHA
    4bd76e2 View commit details
  2. Copy the full SHA
    9055e98 View commit details
  3. Copy the full SHA
    7182ed3 View commit details
  4. Copy the full SHA
    6a562ea View commit details
  5. Copy the full SHA
    9639c55 View commit details
  6. Copy the full SHA
    54b2fd2 View commit details
  7. Copy the full SHA
    2472393 View commit details
  8. Copy the full SHA
    0c8f127 View commit details

Commits on Jan 14, 2021

  1. Copy the full SHA
    39987af View commit details

Commits on Jan 15, 2021

  1. Copy the full SHA
    db2bdd3 View commit details
  2. Use exact entity type

    IzzelAliz committed Jan 15, 2021
    Copy the full SHA
    dec14ae View commit details
  3. Release 1.0.16

    IzzelAliz committed Jan 15, 2021
    Copy the full SHA
    3161ba4 View commit details

Commits on Jan 16, 2021

  1. Copy the full SHA
    601ad19 View commit details

Commits on Jan 21, 2021

  1. Update agp to 1.13

    IzzelAliz committed Jan 21, 2021
    Copy the full SHA
    8e0cef7 View commit details
  2. Copy the full SHA
    7ff9d34 View commit details

Commits on Jan 23, 2021

  1. Copy the full SHA
    cde6872 View commit details

Commits on Jan 29, 2021

  1. Copy the full SHA
    92b3fce View commit details
  2. Copy the full SHA
    0e9e4bf View commit details

Commits on Jan 31, 2021

  1. Copy the full SHA
    1f578ac View commit details
  2. Copy the full SHA
    e645262 View commit details
  3. Copy the full SHA
    8c5c909 View commit details
  4. Backport scoreboard fix

    IzzelAliz committed Jan 31, 2021
    Copy the full SHA
    b6e2a3d View commit details
  5. Release 1.0.17

    IzzelAliz committed Jan 31, 2021
    Copy the full SHA
    795455c View commit details

Commits on Feb 7, 2021

  1. Backport remapper fix

    IzzelAliz committed Feb 7, 2021
    Copy the full SHA
    40d4c6d View commit details
  2. Copy the full SHA
    1a37cd3 View commit details

Commits on Feb 21, 2021

  1. Fix opening mod containers

    IzzelAliz committed Feb 21, 2021
    Copy the full SHA
    9791950 View commit details
  2. Copy the full SHA
    1342e54 View commit details
  3. Copy the full SHA
    8645253 View commit details
Showing with 2,801 additions and 753 deletions.
  1. +15 −119 arclight-api/src/main/java/io/izzel/arclight/api/Unsafe.java
  2. +5 −6 arclight-common/build.gradle
  3. +2 −1 arclight-common/bukkit.at
  4. +8 −1 arclight-common/src/main/java/io/izzel/arclight/common/ArclightMain.java
  5. +1 −0 arclight-common/src/main/java/io/izzel/arclight/common/asm/ArclightImplementer.java
  6. +21 −0 arclight-common/src/main/java/io/izzel/arclight/common/asm/EntityTypePatcher.java
  7. +55 −58 arclight-common/src/main/java/io/izzel/arclight/common/asm/InventoryImplementer.java
  8. +8 −0 arclight-common/src/main/java/io/izzel/arclight/common/bridge/bukkit/CraftItemStackBridge.java
  9. +19 −0 arclight-common/src/main/java/io/izzel/arclight/common/bridge/bukkit/ItemMetaBridge.java
  10. +4 −0 arclight-common/src/main/java/io/izzel/arclight/common/bridge/bukkit/MaterialBridge.java
  11. +9 −3 arclight-common/src/main/java/io/izzel/arclight/common/bridge/inventory/IInventoryBridge.java
  12. +6 −0 arclight-common/src/main/java/io/izzel/arclight/common/bridge/item/ItemStackBridge.java
  13. +3 −3 arclight-common/src/main/java/io/izzel/arclight/common/bridge/world/border/WorldBorderBridge.java
  14. +19 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftAbstractVillagerMixin.java
  15. +1 −2 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftBlockMixin.java
  16. +28 −7 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java
  17. +99 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftItemStackMixin.java
  18. +168 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftMetaItemMixin.java
  19. +15 −1 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/MaterialMixin.java
  20. +25 −21 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/PluginClassLoaderMixin.java
  21. +52 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/RecipeIteratorMixin.java
  22. +1 −1 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/block/RedstoneOreBlockMixin.java
  23. +50 −0 ...ommon/src/main/java/io/izzel/arclight/common/mixin/core/command/arguments/ArgumentTypesMixin.java
  24. +15 −11 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/EntityMixin.java
  25. +7 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/LivingEntityMixin.java
  26. +8 −2 ...t-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/item/ArmorStandEntityMixin.java
  27. +2 −0 ...ght-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/player/PlayerEntityMixin.java
  28. +36 −26 ...mmon/src/main/java/io/izzel/arclight/common/mixin/core/entity/player/ServerPlayerEntityMixin.java
  29. +9 −2 ...n/java/io/izzel/arclight/common/mixin/core/inventory/container/AbstractFurnaceContainerMixin.java
  30. +20 −6 ...-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/ContainerMixin.java
  31. +20 −1 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/item/FilledMapItemMixin.java
  32. +24 −1 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/item/ItemStackMixin.java
  33. +1 −1 ...common/src/main/java/io/izzel/arclight/common/mixin/core/item/crafting/ServerRecipeBookMixin.java
  34. +35 −0 ...main/java/io/izzel/arclight/common/mixin/core/network/handshake/client/CHandshakePacketMixin.java
  35. +12 −3 ...mon/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java
  36. +40 −0 ...ht-common/src/main/java/io/izzel/arclight/common/mixin/core/scoreboard/ServerScoreboardMixin.java
  37. +2 −2 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MinecraftServerMixin.java
  38. +19 −16 ...t-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java
  39. +7 −5 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/TrackedEntityMixin.java
  40. +32 −3 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/WorldMixin.java
  41. +4 −4 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/border/WorldBorderMixin.java
  42. +11 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/chunk/ChunkMixin.java
  43. +29 −0 ...ain/java/io/izzel/arclight/common/mixin/core/world/gen/feature/template/TemplateManagerMixin.java
  44. +2 −2 ...-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/MapData_MapInfoMixin.java
  45. +38 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/forge/NetworkHooksMixin.java
  46. +28 −0 arclight-common/src/main/java/io/izzel/arclight/common/mixin/forge/PacketDistributorMixin.java
  47. +173 −39 arclight-common/src/main/java/io/izzel/arclight/common/mod/server/ArclightContainer.java
  48. +22 −5 arclight-common/src/main/java/io/izzel/arclight/common/mod/server/ArclightPermissionHandler.java
  49. +2 −0 arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java
  50. +0 −29 arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightModVillager.java
  51. +57 −0 arclight-common/src/main/java/io/izzel/arclight/common/mod/server/world/WrappedWorlds.java
  52. +41 −0 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/BlackholeNetHandler.java
  53. +57 −0 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/WrappedContents.java
  54. +2 −13 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ArclightEnumExtender.java
  55. +452 −109 ...ight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ArclightRedirectAdapter.java
  56. +33 −0 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ArclightRemapper.java
  57. +0 −87 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ClassLoaderAdapter.java
  58. +69 −17 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ClassLoaderRemapper.java
  59. +8 −1 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/GlobalClassRepo.java
  60. +20 −0 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/LenientJarRemapper.java
  61. +21 −0 ...ht-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/PluginInheritanceProvider.java
  62. +365 −84 ...src/main/java/io/izzel/arclight/common/mod/util/remapper/generated/ArclightReflectionHandler.java
  63. +23 −9 ...n/src/main/java/io/izzel/arclight/common/mod/util/remapper/generated/RemappingURLClassLoader.java
  64. +30 −26 ...ommon/src/main/java/io/izzel/arclight/common/mod/util/remapper/patcher/ArclightPluginPatcher.java
  65. +89 −0 ...-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/resource/RemapSourceHandler.java
  66. +27 −0 arclight-common/src/main/java/io/izzel/arclight/common/util/ArrayUtil.java
  67. +36 −0 arclight-common/src/main/java/io/izzel/arclight/common/util/Enumerations.java
  68. +1 −0 arclight-common/src/main/resources/META-INF/accesstransformer.cfg
  69. +8 −1 arclight-common/src/main/resources/mixins.arclight.bukkit.json
  70. +3 −0 arclight-common/src/main/resources/mixins.arclight.core.json
  71. +3 −1 arclight-common/src/main/resources/mixins.arclight.forge.json
  72. +5 −6 arclight-forge-1.15/build.gradle
  73. +3 −0 arclight-forge-1.15/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_15.java
  74. +21 −0 ....15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/dfu/CraftMagicNumbersMixin.java
  75. +20 −0 ...e-1.15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/dfu/DataFixerUpperMixin.java
  76. +19 −0 ...1.15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/dfu/DataFixesManagerMixin.java
  77. +41 −0 ...15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/dfu/EntityType_BuilderMixin.java
  78. +26 −0 ...-1.15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/dfu/MinecraftServerMixin.java
  79. +20 −0 ...e-1.15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/dfu/TileEntityTypeMixin.java
  80. +32 −0 ...e-1.15/src/main/java/io/izzel/arclight/impl/mixin/v1_15/optimization/stream/CommandNodeMixin.java
  81. +14 −0 arclight-forge-1.15/src/main/resources/mixins.arclight.impl.optimization.dfu.1_15.json
  82. +1 −0 arclight-forge-1.15/src/main/resources/mixins.arclight.impl.optimization.stream.1_15.json
  83. +2 −2 build.gradle
  84. +4 −11 forge-installer/src/main/java/io/izzel/arclight/forgeinstaller/ForgeInstaller.java
  85. +7 −0 i18n-config/src/main/java/io/izzel/arclight/i18n/conf/OptimizationSpec.java
  86. +1 −0 i18n-config/src/main/resources/META-INF/arclight.conf
  87. +14 −2 i18n-config/src/main/resources/META-INF/i18n/en_us.conf
  88. +14 −3 i18n-config/src/main/resources/META-INF/i18n/zh_cn.conf
134 changes: 15 additions & 119 deletions arclight-api/src/main/java/io/izzel/arclight/api/Unsafe.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package io.izzel.arclight.api;

import sun.reflect.CallerSensitive;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Field;
@@ -46,7 +44,6 @@ public static MethodHandles.Lookup lookup() {
return lookup;
}

@CallerSensitive
public static sun.misc.Unsafe getUnsafe() {
return unsafe;
}
@@ -123,96 +120,6 @@ public static void putDouble(Object o, long l, double v) {
unsafe.putDouble(o, l, v);
}

@Deprecated
public static int getInt(Object o, int i) {
return unsafe.getInt(o, i);
}

@Deprecated
public static void putInt(Object o, int i, int i1) {
unsafe.putInt(o, i, i1);
}

@Deprecated
public static Object getObject(Object o, int i) {
return unsafe.getObject(o, i);
}

@Deprecated
public static void putObject(Object o, int i, Object o1) {
unsafe.putObject(o, i, o1);
}

@Deprecated
public static boolean getBoolean(Object o, int i) {
return unsafe.getBoolean(o, i);
}

@Deprecated
public static void putBoolean(Object o, int i, boolean b) {
unsafe.putBoolean(o, i, b);
}

@Deprecated
public static byte getByte(Object o, int i) {
return unsafe.getByte(o, i);
}

@Deprecated
public static void putByte(Object o, int i, byte b) {
unsafe.putByte(o, i, b);
}

@Deprecated
public static short getShort(Object o, int i) {
return unsafe.getShort(o, i);
}

@Deprecated
public static void putShort(Object o, int i, short i1) {
unsafe.putShort(o, i, i1);
}

@Deprecated
public static char getChar(Object o, int i) {
return unsafe.getChar(o, i);
}

@Deprecated
public static void putChar(Object o, int i, char c) {
unsafe.putChar(o, i, c);
}

@Deprecated
public static long getLong(Object o, int i) {
return unsafe.getLong(o, i);
}

@Deprecated
public static void putLong(Object o, int i, long l) {
unsafe.putLong(o, i, l);
}

@Deprecated
public static float getFloat(Object o, int i) {
return unsafe.getFloat(o, i);
}

@Deprecated
public static void putFloat(Object o, int i, float v) {
unsafe.putFloat(o, i, v);
}

@Deprecated
public static double getDouble(Object o, int i) {
return unsafe.getDouble(o, i);
}

@Deprecated
public static void putDouble(Object o, int i, double v) {
unsafe.putDouble(o, i, v);
}

public static byte getByte(long l) {
return unsafe.getByte(l);
}
@@ -305,16 +212,6 @@ public static void freeMemory(long l) {
unsafe.freeMemory(l);
}

@Deprecated
public static int fieldOffset(Field field) {
return unsafe.fieldOffset(field);
}

@Deprecated
public static Object staticFieldBase(Class<?> aClass) {
return unsafe.staticFieldBase(aClass);
}

public static long staticFieldOffset(Field field) {
return unsafe.staticFieldOffset(field);
}
@@ -353,7 +250,7 @@ public static int pageSize() {

public static Class<?> defineClass(String s, byte[] bytes, int i, int i1, ClassLoader classLoader, ProtectionDomain protectionDomain) {
try {
return (Class<?>) defineClass.bindTo(classLoader).invoke(s, bytes, i , i1, protectionDomain);
return (Class<?>) defineClass.bindTo(classLoader).invoke(s, bytes, i, i1, protectionDomain);
} catch (Throwable throwable) {
throwException(throwable);
return null;
@@ -368,21 +265,6 @@ public static Object allocateInstance(Class<?> aClass) throws InstantiationExcep
return unsafe.allocateInstance(aClass);
}

@Deprecated
public static void monitorEnter(Object o) {
unsafe.monitorEnter(o);
}

@Deprecated
public static void monitorExit(Object o) {
unsafe.monitorExit(o);
}

@Deprecated
public static boolean tryMonitorEnter(Object o) {
return unsafe.tryMonitorEnter(o);
}

public static void throwException(Throwable throwable) {
unsafe.throwException(throwable);
}
@@ -526,4 +408,18 @@ public static void storeFence() {
public static void fullFence() {
unsafe.fullFence();
}

public static Class<?> getCallerClass() {
return INSTANCE.getClassContext()[3];
}

private static final CallerClass INSTANCE = new CallerClass();

private static class CallerClass extends SecurityManager {

@Override
public Class<?>[] getClassContext() {
return super.getClassContext();
}
}
}
11 changes: 5 additions & 6 deletions arclight-common/build.gradle
Original file line number Diff line number Diff line change
@@ -2,14 +2,13 @@ buildscript {
repositories {
maven { url = 'https://files.minecraftforge.net/maven' }
maven { url = 'https://repo.spongepowered.org/maven' }
jcenter()
mavenCentral()
maven { url = 'https://jitpack.io' }
maven { url = 'https://maven.izzel.io/releases' }
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
classpath "com.github.ArclightTeam:arclight-gradle-plugin:$agpVersion"
classpath "io.izzel.arclight:arclight-gradle-plugin:$agpVersion"
}
}

@@ -21,7 +20,7 @@ apply plugin: 'io.izzel.arclight'

ext {
minecraftVersion = '1.15.2'
forgeVersion = '31.2.45'
forgeVersion = '31.2.48'
}

arclight {
@@ -41,12 +40,11 @@ minecraft {
}

repositories {
jcenter()
maven { url = 'https://repo.spongepowered.org/maven' }
maven { url = 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url = 'https://repo.codemc.io/repository/nms/' }
maven { url = 'https://files.minecraftforge.net/maven/' }
maven { url = 'https://maven.izzel.io/releases' }
}

dependencies {
@@ -60,6 +58,7 @@ dependencies {
compile 'net.md-5:bungeecord-chat:1.13-SNAPSHOT'
compile 'mysql:mysql-connector-java:5.1.47'
compile 'org.yaml:snakeyaml:1.23'
compile 'io.izzel:tools:1.0.+'
compile project(':arclight-api')
compile project(':i18n-config')
}
3 changes: 2 additions & 1 deletion arclight-common/bukkit.at
Original file line number Diff line number Diff line change
@@ -25,4 +25,5 @@ public org/bukkit/craftbukkit/v/inventory/CraftMetaKnowledgeBook/<init>(Lorg/buk
public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket
public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/bukkit/craftbukkit/v/inventory/CraftMetaCrossbow/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/bukkit/craftbukkit/v/inventory/CraftMetaSuspiciousStew/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/bukkit/craftbukkit/v/inventory/CraftMetaSuspiciousStew/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/bukkit/craftbukkit/v/inventory/CraftMetaItem/<init>(Lnet/minecraft/nbt/CompoundNBT;)V
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.izzel.arclight.common;

import com.google.common.collect.ImmutableMap;
import com.google.gson.internal.bind.TypeAdapters;
import com.google.gson.reflect.TypeToken;
import io.izzel.arclight.api.EnumHelper;
@@ -13,6 +14,10 @@

import java.io.InputStream;
import java.lang.reflect.Field;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

@@ -54,7 +59,9 @@ private void dirtyHacks() throws Exception {
}

private void printLogo() throws Exception {
try (InputStream stream = getClass().getResourceAsStream("/META-INF/MANIFEST.MF")) {
URI uri = getClass().getProtectionDomain().getCodeSource().getLocation().toURI();
FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + uri), ImmutableMap.of("create", "true"));
try (InputStream stream = Files.newInputStream(fs.getPath("/META-INF/MANIFEST.MF"))) {
Manifest manifest = new Manifest(stream);
Attributes attributes = manifest.getMainAttributes();
String version = attributes.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
Original file line number Diff line number Diff line change
@@ -42,6 +42,7 @@ public void initializeLaunch(ITransformerLoader transformerLoader, Path[] specia
this.implementers.put("inventory", new InventoryImplementer());
this.implementers.put("switch", SwitchTableFixer.INSTANCE);
this.implementers.put("async", AsyncCatcher.INSTANCE);
this.implementers.put("entitytype", EntityTypePatcher.INSTANCE);
}

@Override
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.izzel.arclight.common.asm;

import cpw.mods.modlauncher.serviceapi.ILaunchPluginService;
import io.izzel.arclight.api.ArclightVersion;
import org.objectweb.asm.tree.ClassNode;

public class EntityTypePatcher implements Implementer {

public static final EntityTypePatcher INSTANCE = new EntityTypePatcher();

private final String entityPackage = "org/bukkit/craftbukkit/" + ArclightVersion.current().packageName() + "/entity";

@Override
public boolean processClass(ClassNode node, ILaunchPluginService.ITransformerLoader transformerLoader) {
if (node.name.startsWith(entityPackage) && !node.name.endsWith("CraftEntity")) {
return node.methods.removeIf(methodNode -> methodNode.name.equals("getType")
&& methodNode.desc.equals("()Lorg/bukkit/entity/EntityType;"));
}
return false;
}
}
Loading