diff --git a/Server/data/configs/item_configs.json b/Server/data/configs/item_configs.json index 6d9c649e0..93762f2a4 100644 --- a/Server/data/configs/item_configs.json +++ b/Server/data/configs/item_configs.json @@ -130116,7 +130116,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "13879", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -130138,7 +130138,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "13880", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -130160,7 +130160,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "13881", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -130182,7 +130182,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "13882", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -130203,7 +130203,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "13883", - "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,117" }, { "requirements": "{1,78}", @@ -131553,7 +131553,7 @@ "name": "Corrupt morrigan's javelin", "archery_ticket_price": "0", "id": "13953", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -131573,7 +131573,7 @@ "name": "C. morrigan's javelin (p)", "archery_ticket_price": "0", "id": "13954", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -131593,7 +131593,7 @@ "name": "C. morrigan's javelin (p+)", "archery_ticket_price": "0", "id": "13955", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -131613,7 +131613,7 @@ "name": "C. morrigan's javelin (p++)", "archery_ticket_price": "0", "id": "13956", - "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145" }, { "requirements": "{4,78}", @@ -131632,7 +131632,7 @@ "name": "C. morrigan's throwing axe", "archery_ticket_price": "0", "id": "13957", - "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,0" + "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,117" }, { "requirements": "{0,78}-{4,78}", diff --git a/Server/detekt.yml b/Server/detekt.yml new file mode 100644 index 000000000..8895d520d --- /dev/null +++ b/Server/detekt.yml @@ -0,0 +1,713 @@ +build: + maxIssues: 0 + excludeCorrectable: false + weights: + # complexity: 2 + # LongParameterList: 1 + # style: 1 + # comments: 1 + +config: + validation: true + warningsAsErrors: false + # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]' + excludes: '' + +processors: + active: true + exclude: + - 'DetektProgressListener' + # - 'KtFileCountProcessor' + # - 'PackageCountProcessor' + # - 'ClassCountProcessor' + # - 'FunctionCountProcessor' + # - 'PropertyCountProcessor' + # - 'ProjectComplexityProcessor' + # - 'ProjectCognitiveComplexityProcessor' + # - 'ProjectLLOCProcessor' + # - 'ProjectCLOCProcessor' + # - 'ProjectLOCProcessor' + # - 'ProjectSLOCProcessor' + # - 'LicenseHeaderLoaderExtension' + +console-reports: + active: true + exclude: + - 'ProjectStatisticsReport' + - 'ComplexityReport' + - 'NotificationReport' + - 'FindingsReport' + - 'FileBasedFindingsReport' + # - 'LiteFindingsReport' + +output-reports: + active: true + exclude: + # - 'TxtOutputReport' + # - 'XmlOutputReport' + # - 'HtmlOutputReport' + # - 'MdOutputReport' + +comments: + active: true + AbsentOrWrongFileLicense: + active: false + licenseTemplateFile: 'license.template' + licenseTemplateIsRegex: false + CommentOverPrivateFunction: + active: false + CommentOverPrivateProperty: + active: false + DeprecatedBlockTag: + active: false + EndOfSentenceFormat: + active: false + endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)' + KDocReferencesNonPublicProperty: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + OutdatedDocumentation: + active: false + matchTypeParameters: true + matchDeclarationsOrder: true + allowParamOnConstructorProperties: false + UndocumentedPublicClass: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + searchInNestedClass: true + searchInInnerClass: true + searchInInnerObject: true + searchInInnerInterface: true + UndocumentedPublicFunction: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + UndocumentedPublicProperty: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + +complexity: + active: true + ComplexCondition: + active: false + threshold: 4 + ComplexInterface: + active: false + threshold: 10 + includeStaticDeclarations: false + includePrivateDeclarations: false + ComplexMethod: + active: false + threshold: 15 + ignoreSingleWhenExpression: false + ignoreSimpleWhenEntries: false + ignoreNestingFunctions: false + nestingFunctions: + - 'also' + - 'apply' + - 'forEach' + - 'isNotNull' + - 'ifNull' + - 'let' + - 'run' + - 'use' + - 'with' + LabeledExpression: + active: false + ignoredLabels: [] + LargeClass: + active: false + threshold: 600 + LongMethod: + active: false + threshold: 60 + LongParameterList: + active: false + functionThreshold: 6 + constructorThreshold: 7 + ignoreDefaultParameters: false + ignoreDataClasses: true + ignoreAnnotatedParameter: [] + MethodOverloading: + active: false + threshold: 6 + NamedArguments: + active: false + threshold: 3 + ignoreArgumentsMatchingNames: false + NestedBlockDepth: + active: false + threshold: 4 + NestedScopeFunctions: + active: false + threshold: 1 + functions: + - 'kotlin.apply' + - 'kotlin.run' + - 'kotlin.with' + - 'kotlin.let' + - 'kotlin.also' + ReplaceSafeCallChainWithRun: + active: false + StringLiteralDuplication: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + threshold: 3 + ignoreAnnotation: true + excludeStringsWithLessThan5Characters: true + ignoreStringsRegex: '$^' + TooManyFunctions: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + thresholdInFiles: 11 + thresholdInClasses: 11 + thresholdInInterfaces: 11 + thresholdInObjects: 11 + thresholdInEnums: 11 + ignoreDeprecated: false + ignorePrivate: false + ignoreOverridden: false + +coroutines: + active: true + GlobalCoroutineUsage: + active: false + InjectDispatcher: + active: true + dispatcherNames: + - 'IO' + - 'Default' + - 'Unconfined' + RedundantSuspendModifier: + active: true + SleepInsteadOfDelay: + active: true + SuspendFunWithCoroutineScopeReceiver: + active: false + SuspendFunWithFlowReturnType: + active: true + +empty-blocks: + active: false + EmptyCatchBlock: + active: true + allowedExceptionNameRegex: '_|(ignore|expected).*' + EmptyClassBlock: + active: true + EmptyDefaultConstructor: + active: true + EmptyDoWhileBlock: + active: true + EmptyElseBlock: + active: true + EmptyFinallyBlock: + active: true + EmptyForBlock: + active: true + EmptyFunctionBlock: + active: true + ignoreOverridden: false + EmptyIfBlock: + active: true + EmptyInitBlock: + active: true + EmptyKtFile: + active: true + EmptySecondaryConstructor: + active: true + EmptyTryBlock: + active: true + EmptyWhenBlock: + active: true + EmptyWhileBlock: + active: true + +exceptions: + active: true + ExceptionRaisedInUnexpectedLocation: + active: true + methodNames: + - 'equals' + - 'finalize' + - 'hashCode' + - 'toString' + InstanceOfCheckForException: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + NotImplementedDeclaration: + active: false + ObjectExtendsThrowable: + active: false + PrintStackTrace: + active: false + RethrowCaughtException: + active: true + ReturnFromFinally: + active: true + ignoreLabeled: false + SwallowedException: + active: false + ignoredExceptionTypes: + - 'InterruptedException' + - 'MalformedURLException' + - 'NumberFormatException' + - 'ParseException' + allowedExceptionNameRegex: '_|(ignore|expected).*' + ThrowingExceptionFromFinally: + active: true + ThrowingExceptionInMain: + active: false + ThrowingExceptionsWithoutMessageOrCause: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + exceptions: + - 'ArrayIndexOutOfBoundsException' + - 'Exception' + - 'IllegalArgumentException' + - 'IllegalMonitorStateException' + - 'IllegalStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' + ThrowingNewInstanceOfSameException: + active: true + TooGenericExceptionCaught: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + exceptionNames: + - 'ArrayIndexOutOfBoundsException' + - 'Error' + - 'Exception' + - 'IllegalMonitorStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' + allowedExceptionNameRegex: '_|(ignore|expected).*' + TooGenericExceptionThrown: + active: true + exceptionNames: + - 'Error' + - 'Exception' + - 'RuntimeException' + - 'Throwable' + +naming: + active: true + BooleanPropertyNaming: + active: false + allowedPattern: '^(is|has|are)' + ignoreOverridden: true + ClassNaming: + active: false + classPattern: '[A-Z][a-zA-Z0-9]*' + ConstructorParameterNaming: + active: false + parameterPattern: '[a-z][A-Za-z0-9]*' + privateParameterPattern: '[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + EnumNaming: + active: true + enumEntryPattern: '[A-Z][_a-zA-Z0-9]*' + ForbiddenClassName: + active: false + forbiddenName: [] + FunctionMaxLength: + active: false + maximumFunctionNameLength: 30 + FunctionMinLength: + active: false + minimumFunctionNameLength: 3 + FunctionNaming: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + functionPattern: '[a-z][a-zA-Z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + FunctionParameterNaming: + active: false + parameterPattern: '[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + InvalidPackageDeclaration: + active: false + rootPackage: '' + requireRootInDeclaration: false + LambdaParameterNaming: + active: false + parameterPattern: '[a-z][A-Za-z0-9]*|_' + MatchingDeclarationName: + active: false + mustBeFirst: true + MemberNameEqualsClassName: + active: false + ignoreOverridden: true + NoNameShadowing: + active: true + NonBooleanPropertyPrefixedWithIs: + active: false + ObjectPropertyNaming: + active: true + constantPattern: '[A-Za-z][_A-Za-z0-9]*' + propertyPattern: '[A-Za-z][_A-Za-z0-9]*' + privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*' + PackageNaming: + active: false + packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*' + TopLevelPropertyNaming: + active: false + constantPattern: '[A-Z][_A-Z0-9]*' + propertyPattern: '[A-Za-z][_A-Za-z0-9]*' + privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*' + VariableMaxLength: + active: false + maximumVariableNameLength: 64 + VariableMinLength: + active: false + minimumVariableNameLength: 1 + VariableNaming: + active: false + variablePattern: '[a-z][A-Za-z0-9]*' + privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + +performance: + active: true + ArrayPrimitive: + active: false + CouldBeSequence: + active: false + threshold: 3 + ForEachOnRange: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + SpreadOperator: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + UnnecessaryTemporaryInstantiation: + active: true + +potential-bugs: + active: true + AvoidReferentialEquality: + active: true + forbiddenTypePatterns: + - 'kotlin.String' + CastToNullableType: + active: false + Deprecation: + active: false + DontDowncastCollectionTypes: + active: false + DoubleMutabilityForCollection: + active: true + mutableTypes: + - 'kotlin.collections.MutableList' + - 'kotlin.collections.MutableMap' + - 'kotlin.collections.MutableSet' + - 'java.util.ArrayList' + - 'java.util.LinkedHashSet' + - 'java.util.HashSet' + - 'java.util.LinkedHashMap' + - 'java.util.HashMap' + DuplicateCaseInWhenExpression: + active: true + ElseCaseInsteadOfExhaustiveWhen: + active: false + EqualsAlwaysReturnsTrueOrFalse: + active: true + EqualsWithHashCodeExist: + active: true + ExitOutsideMain: + active: false + ExplicitGarbageCollectionCall: + active: false + HasPlatformType: + active: true + IgnoredReturnValue: + active: true + restrictToAnnotatedMethods: true + returnValueAnnotations: + - '*.CheckResult' + - '*.CheckReturnValue' + - 'com.google.errorprone.annotations.CheckReturnValue' + ignoreReturnValueAnnotations: + - '*.CanIgnoreReturnValue' + ignoreFunctionCall: [] + ImplicitDefaultLocale: + active: true + ImplicitUnitReturnType: + active: false + allowExplicitReturnType: true + InvalidRange: + active: true + IteratorHasNextCallsNextMethod: + active: true + IteratorNotThrowingNoSuchElementException: + active: true + LateinitUsage: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + ignoreOnClassesPattern: '' + MapGetWithNotNullAssertionOperator: + active: true + MissingPackageDeclaration: + active: false + excludes: ['**/*.kts'] + MissingWhenCase: + active: true + allowElseExpression: true + NullCheckOnMutableProperty: + active: false + NullableToStringCall: + active: false + RedundantElseInWhen: + active: true + UnconditionalJumpStatementInLoop: + active: false + UnnecessaryNotNullOperator: + active: true + UnnecessarySafeCall: + active: true + UnreachableCatchBlock: + active: true + UnreachableCode: + active: true + UnsafeCallOnNullableType: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + UnsafeCast: + active: true + UnusedUnaryOperator: + active: true + UselessPostfixExpression: + active: false + WrongEqualsTypeParameter: + active: true + +style: + active: true + CanBeNonNullable: + active: false + CascadingCallWrapping: + active: false + includeElvis: true + ClassOrdering: + active: false + CollapsibleIfStatements: + active: false + DataClassContainsFunctions: + active: false + conversionFunctionPrefix: 'to' + DataClassShouldBeImmutable: + active: false + DestructuringDeclarationWithTooManyEntries: + active: true + maxDestructuringEntries: 3 + EqualsNullCall: + active: true + EqualsOnSignatureLine: + active: false + ExplicitCollectionElementAccessMethod: + active: false + ExplicitItLambdaParameter: + active: false + ExpressionBodySyntax: + active: false + includeLineWrapping: false + ForbiddenComment: + active: false + values: + - 'FIXME:' + - 'STOPSHIP:' + - 'TODO:' + allowedPatterns: '' + customMessage: '' + ForbiddenImport: + active: false + imports: [] + forbiddenPatterns: '' + ForbiddenMethodCall: + active: false + methods: + - 'kotlin.io.print' + - 'kotlin.io.println' + ForbiddenPublicDataClass: + active: true + excludes: ['**'] + ignorePackages: + - '*.internal' + - '*.internal.*' + ForbiddenSuppress: + active: false + rules: [] + ForbiddenVoid: + active: true + ignoreOverridden: false + ignoreUsageInGenerics: false + FunctionOnlyReturningConstant: + active: false + ignoreOverridableFunction: true + ignoreActualFunction: true + excludedFunctions: '' + LibraryCodeMustSpecifyReturnType: + active: true + excludes: ['**'] + LibraryEntitiesShouldNotBePublic: + active: true + excludes: ['**'] + LoopWithTooManyJumpStatements: + active: false + maxJumpCount: 1 + MagicNumber: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts'] + ignoreNumbers: + - '-1' + - '0' + - '1' + - '2' + ignoreHashCodeFunction: true + ignorePropertyDeclaration: false + ignoreLocalVariableDeclaration: false + ignoreConstantDeclaration: true + ignoreCompanionObjectPropertyDeclaration: true + ignoreAnnotation: false + ignoreNamedArgument: true + ignoreEnums: false + ignoreRanges: false + ignoreExtensionFunctions: true + MandatoryBracesIfStatements: + active: false + MandatoryBracesLoops: + active: false + MaxChainedCallsOnSameLine: + active: false + maxChainedCalls: 5 + MaxLineLength: + active: false + maxLineLength: 120 + excludePackageStatements: true + excludeImportStatements: true + excludeCommentStatements: false + MayBeConst: + active: false + ModifierOrder: + active: false + MultilineLambdaItParameter: + active: false + NestedClassesVisibility: + active: true + NewLineAtEndOfFile: + active: false + NoTabs: + active: false + NullableBooleanCheck: + active: false + ObjectLiteralToLambda: + active: true + OptionalAbstractKeyword: + active: true + OptionalUnit: + active: false + OptionalWhenBraces: + active: false + PreferToOverPairSyntax: + active: false + ProtectedMemberInFinalClass: + active: true + RedundantExplicitType: + active: false + RedundantHigherOrderMapUsage: + active: true + RedundantVisibilityModifierRule: + active: false + ReturnCount: + active: false + max: 2 + excludedFunctions: 'equals' + excludeLabeled: false + excludeReturnFromLambda: true + excludeGuardClauses: false + SafeCast: + active: true + SerialVersionUIDInSerializableClass: + active: true + SpacingBetweenPackageAndImports: + active: false + ThrowsCount: + active: false + max: 2 + excludeGuardClauses: false + TrailingWhitespace: + active: false + UnderscoresInNumericLiterals: + active: false + acceptableLength: 4 + allowNonStandardGrouping: false + UnnecessaryAbstractClass: + active: true + UnnecessaryAnnotationUseSiteTarget: + active: false + UnnecessaryApply: + active: true + UnnecessaryBackticks: + active: false + UnnecessaryFilter: + active: true + UnnecessaryInheritance: + active: true + UnnecessaryInnerClass: + active: false + UnnecessaryLet: + active: false + UnnecessaryParentheses: + active: false + UntilInsteadOfRangeTo: + active: false + UnusedImports: + active: false + UnusedPrivateClass: + active: false + UnusedPrivateMember: + active: false + allowedNames: '(_|ignored|expected|serialVersionUID)' + UseAnyOrNoneInsteadOfFind: + active: true + UseArrayLiteralsInAnnotations: + active: true + UseCheckNotNull: + active: true + UseCheckOrError: + active: false + UseDataClass: + active: false + allowVars: false + UseEmptyCounterpart: + active: false + UseIfEmptyOrIfBlank: + active: false + UseIfInsteadOfWhen: + active: false + UseIsNullOrEmpty: + active: true + UseOrEmpty: + active: true + UseRequire: + active: true + UseRequireNotNull: + active: true + UselessCallOnNotNull: + active: true + UtilityClassWithPublicConstructor: + active: false + VarCouldBeVal: + active: true + ignoreLateinitVar: false + WildcardImport: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + excludeImports: + - 'java.util.*' diff --git a/Server/pom.xml b/Server/pom.xml index 14376e738..fa45ae164 100644 --- a/Server/pom.xml +++ b/Server/pom.xml @@ -84,6 +84,12 @@ 2.0.0-beta6 compile + + com.google.errorprone + error_prone_annotations + 2.9.0 + compile + @@ -190,6 +196,22 @@ 1024m false + + -XDcompilePolicy=simple + + + + + com.google.errorprone + error_prone_core + 2.9.0 + + + @@ -235,6 +257,48 @@ rs09.Server + + org.apache.maven.plugins + maven-antrun-plugin + 1.8 + + + + detekt + verify + + + + + + + + + + + + + + + + run + + + + + io.gitlab.arturbosch.detekt + detekt-cli + 1.21.0 + + + diff --git a/Server/src/main/java/core/game/container/Container.java b/Server/src/main/java/core/game/container/Container.java index e3ac24b61..4265e0d76 100644 --- a/Server/src/main/java/core/game/container/Container.java +++ b/Server/src/main/java/core/game/container/Container.java @@ -12,6 +12,9 @@ import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import com.google.errorprone.annotations.CheckReturnValue; + + /** * Represents a container which contains items. * @@ -277,6 +280,7 @@ public class Container { * @param items The set of items. * @return {@code True} if all items got successfully removed. */ + @CheckReturnValue public boolean remove(Item... items) { boolean removedAll = true; for (Item item : items) { @@ -294,6 +298,7 @@ public class Container { * @param item The item. * @return {@code True} if the item got removed, {@code false} if not. */ + @CheckReturnValue public boolean remove(Item item) { return remove(item, true); } @@ -305,6 +310,7 @@ public class Container { * @param fireListener If the fire listener should be "notified". * @return {@code True} if the item got removed,
{@code false} if not. */ + @CheckReturnValue public boolean remove(Item item, boolean fireListener) { int slot = getSlot(item); if (slot != -1) { @@ -322,6 +328,7 @@ public class Container { * @return {@code True} if the item got removed,
{@code false} if the * item on the slot was null or the ids didn't match. */ + @CheckReturnValue public boolean remove(Item item, int slot, boolean fireListener) { Item oldItem = items[slot]; if (oldItem == null || oldItem.getId() != item.getId()) { diff --git a/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt b/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt index e161c7d89..9aff415e9 100644 --- a/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt +++ b/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt @@ -415,12 +415,14 @@ class CombatBotAssembler { skillAmt++ } when (tier){ - Tier.PURE -> bot.skills.setStaticLevel(Skills.DEFENCE,10) - Tier.PURE -> bot.skills.setStaticLevel(Skills.STRENGTH,99) - Tier.PURE -> bot.skills.setStaticLevel(Skills.ATTACK,90) - Tier.PURE -> bot.skills.setStaticLevel(Skills.PRAYER,43) - Tier.PURE -> bot.skills.setStaticLevel(Skills.RANGE,1) - Tier.PURE -> bot.skills.setStaticLevel(Skills.MAGIC,1) + Tier.PURE -> { + bot.skills.setStaticLevel(Skills.DEFENCE,10) + bot.skills.setStaticLevel(Skills.STRENGTH,99) + bot.skills.setStaticLevel(Skills.ATTACK,90) + bot.skills.setStaticLevel(Skills.PRAYER,43) + bot.skills.setStaticLevel(Skills.RANGE,1) + bot.skills.setStaticLevel(Skills.MAGIC,1) + } } bot.skills.addExperience(Skills.HITPOINTS, (totalXPAdd / skillAmt) * 0.2) @@ -528,4 +530,4 @@ class CombatBotAssembler { val RING_ARCH = arrayOf(6733) val RICH_MELEE_HELMS = arrayOf(2587,2595,2605,2613,2619,2627,2657,2665,2673,3486,1149,10828,4716,4724,4753) -} \ No newline at end of file +} diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt index 3bf7d736e..5309958a3 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt @@ -146,12 +146,12 @@ class AvanDialogue (player: Player? = null): DialoguePlugin(player) { 304 -> npc("Well, the last I heard of my brother Johnathon," , " he was studying the magical arts, " , "and trying to hunt some demon or other out in The Wilderness.").also{stage++} - 304 -> npc("Unsurprisingly, I do not believe he is doing a particularly good job of things, ", + 305 -> npc("Unsurprisingly, I do not believe he is doing a particularly good job of things, ", "and spends most of his time recovering from his injuries " , "in some tavern or other near the eastern edge of The Wilderness. " , "You'll probably find him still there.").also{stage++} - 305 -> player("Thanks Avan.").also { stage = 1000 } + 306 -> player("Thanks Avan.").also { stage = 1000 } 400 -> player("I am still working on it.").also{stage++} diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt index 4f056fef8..33fecf75a 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt @@ -35,7 +35,8 @@ class LightSourceExtinguisher : OptionHandler(){ } fun Container.replace(item: Item, with: Item){ - remove(item) - add(with) + if(remove(item)) { + add(with) + } } -} \ No newline at end of file +} diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt index 835cfec99..06217efe2 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt @@ -73,8 +73,9 @@ class LightSourceLighter : UseWithHandler(590,36,38){ } fun Container.replace(item: Item, with: Item){ - remove(item) - add(with) + if(remove(item)) { + add(with) + } } fun light(player: Player, item: Item, lightSource: LightSources): Boolean{ diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt index 917414af5..e846e9004 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt @@ -13,7 +13,7 @@ import java.util.* @Initializable class AnimationCommandSet : CommandSet(Privilege.ADMIN) { - protected var npcs: List = ArrayList() + private var npcs: List = ArrayList() override fun defineCommands() {